Assignment

Paper

Short objective

The objective of this report is to analyze the incidence rates of Guillain-Barré Syndroom (gbs) and anaphylactic shock using the PHARMO database, and to present the results in a clear and concise manner.

Methods

PHARMO

The data for this analysis was obtained from the PHARMO database, which is a research institute in the Netherlands that maintains a database of electronic medical records. The Pharmo Data Network is a population-based network of healthcare databases and combines data from different healthcare settings in the Netherlands. These different data sources are linked on a patient level through validated algorithms.

Study population

For this research particularly, individuals who were in the study between 01/01/2017 and 31/12/2020 are included. In addition, the study’s inclusion and exclusion criteria consist of three requirements. The first requirement is that individuals must have at least one year of follow-up before the study’s start date. The second requirement is that individuals must have at least one day of follow-up after the study’s start date. Lastly, the study will not consider repeated events, and individuals will be censored at the first occurrence of an event. After fulfilling the aforementioned requirements, we have a study population of N = 675

Data Preperation

Prior to the analysis, various tables are prepared and then combined in order to obtain the incidence rates. First the OBSERVATION_PERIOD table was loaded and individuals who are not in the above mentioned study population, will be removed.

After doing this, the PERSONS table was loaded. In this table, an age variable is made with the birth data variable. The age was created with the start of the study period as reference. with this age variable, the following age bands are created: 0-19, 20-39, 40-59, 60-79. The age band 80+ is not created, because the there are no individuals who are older than 67.

The next step in the date preparation, was merging the OBSERVATION_PERIODS and PERSON table. We only kept the individuals who are in the OBSERVATION_PERIODS table.

When the aforementioned tables are merged, Concept sets were created. These sets were created from diagnostic codes from the codesheet. All diagnostic codes and vocabulary of the events used to make incidence rates can be found in Table 1

When the aforementioned tables are merged, Concept sets were created. These sets were created from diagnostic codes from the codesheet. All diagnostic codes and vocabulary of the events we will make incidence rates of can be found in Table 1.

Lastly, the EVENTS table is loaded, and merged with the event codes. Tell something about what we did and why

  1. Merge with the above data set.
  2. Look at the dates of events. What does it mean if an event date is recorded before start of study or after end of study? Should these observations be discarded or not? Make the appropriate changes to the table.
  3. Make sure to remove repeated events(more than 1 event for the same individual).

Analyis

\[ \text{Incidence Rates overall} = \frac{Total \ number \ of \ events}{Total \ person-years} \]

\[ \text{Incidence rates by year} = \frac{total \ number \ of \ events \ for \ each \ year} { person-years \ for \ each \ year} \]

\[ \text{Incidence rates by year by age bands} = \frac{Total \ number \ of \ events for \ each \ year \ per \ age \ band}{person-years \ for \ each \ year \ per \ age \ band} \]

Results

Lessons learned

Annex 1: quality check findings day 6

Figure 1: A table

Forest Plots

Total

2017

2018

2019

2020

Annex Day 6

LS0tDQp0aXRsZTogIkluY2lkZW5jZSINCmF1dGhvcjogIk1hcnRpam4gS29zdGVyLCBKdXJyaWFuIHZhbiBkZSBLcmFhdHMsIFRpbSBQb29ydGh1aXMiDQpkYXRlOiAiYHIgU3lzLkRhdGUoKWAiDQpvdXRwdXQ6DQogIGJvb2tkb3duOjpodG1sX2RvY3VtZW50MjoNCiAgICB0b2M6IHRydWUNCiAgICBudW1iZXJfc2VjdGlvbjogdHJ1ZQ0KICAgIGhpZ2hsaWdodDogdGFuZ28NCiAgICB0aGVtZTogam91cm5hbA0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgIA0KLS0tDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFLCBjb21tZW50ID0gTkEsIHdhcm5pbmcgPSBGQUxTRSwNCiAgICAgICAgICAgICAgICAgICAgICBlcnJvcj1GQUxTRSwgcmVzdWx0cz0naGlkZScsZmlnLmtlZXA9J2FsbCcpDQpgYGANCg0KYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgcGFnZWQucHJpbnQ9RkFMU0V9DQoNCmxpYnJhcnkoa25pdHIpDQpsaWJyYXJ5KGRhdGEudGFibGUpDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkocmVhZHhsKQ0KbGlicmFyeShsdWJyaWRhdGUpDQpsaWJyYXJ5KERUKQ0KbGlicmFyeShlcGlSKQ0KYGBgDQoNCiMgQXNzaWdubWVudCB7LS50YWJzZXR9DQoNCiMjIFBhcGVyIHstI3BhcH0NCg0KYGBge3J9DQoNCiMgbG9hZCB0aGUgdGFibGVzDQpPX1AgPC0gcmVhZC5jc3YoIlRhYmxlcy9PQlNFUlZBVElPTl9QRVJJT0RTLmNzdiIpDQpldmVudHMgPC0gcmVhZC5jc3YoJ1RhYmxlcy9FVkVOVFMuY3N2JykNCnBlcnNvbnMgPC0gcmVhZC5jc3YoJ1RhYmxlcy9QRVJTT05TLmNzdicpDQppbnN0YW5jZSA8LSByZWFkLmNzdignVGFibGVzL0lOU1RBTkNFLmNzdicpDQpjb2RlbGlzdCA8LSByZWFkX2V4Y2VsKCJUYWJsZXMvQ29kZUxpc3RfMjAyMTAxMjgoMSkueGxzeCIsIA0KICAgIHNoZWV0ID0gIkFOQVBIWUwiKQ0KY29kZWxpc3QyIDwtIHJlYWRfZXhjZWwoIlRhYmxlcy9Db2RlTGlzdF8yMDIxMDEyOCgxKS54bHN4IiwgDQogICAgc2hlZXQgPSAiR0JTIikNCmBgYA0KDQoNCiMjIyBTaG9ydCBvYmplY3RpdmUgey0jc2hvcnR9DQoNClRoZSBvYmplY3RpdmUgb2YgdGhpcyByZXBvcnQgaXMgdG8gYW5hbHl6ZSB0aGUgaW5jaWRlbmNlIHJhdGVzIG9mIEd1aWxsYWluLUJhcnLDqSBTeW5kcm9vbSAoZ2JzKSBhbmQgYW5hcGh5bGFjdGljIHNob2NrIHVzaW5nIHRoZSBQSEFSTU8gZGF0YWJhc2UsIGFuZCB0byBwcmVzZW50IHRoZSByZXN1bHRzIGluIGEgY2xlYXIgYW5kIGNvbmNpc2UgbWFubmVyLg0KDQojIyMgTWV0aG9kcyB7LSNtZXRofQ0KDQojIyMjIFBIQVJNTyB7LSNwaGFyfQ0KDQpUaGUgZGF0YSBmb3IgdGhpcyBhbmFseXNpcyB3YXMgb2J0YWluZWQgZnJvbSB0aGUgUEhBUk1PIGRhdGFiYXNlLCB3aGljaCBpcyBhIHJlc2VhcmNoIGluc3RpdHV0ZSBpbiB0aGUgTmV0aGVybGFuZHMgdGhhdCBtYWludGFpbnMgYSBkYXRhYmFzZSBvZiBlbGVjdHJvbmljIG1lZGljYWwgcmVjb3Jkcy4gVGhlIFBoYXJtbyBEYXRhIE5ldHdvcmsgaXMgYSBwb3B1bGF0aW9uLWJhc2VkIG5ldHdvcmsgb2YgaGVhbHRoY2FyZSBkYXRhYmFzZXMgYW5kIGNvbWJpbmVzIGRhdGEgZnJvbSBkaWZmZXJlbnQgaGVhbHRoY2FyZSBzZXR0aW5ncyBpbiB0aGUgTmV0aGVybGFuZHMuIFRoZXNlIGRpZmZlcmVudCBkYXRhIHNvdXJjZXMgYXJlIGxpbmtlZCBvbiBhIHBhdGllbnQgbGV2ZWwgdGhyb3VnaCB2YWxpZGF0ZWQgYWxnb3JpdGhtcy4NCg0KDQoNCmBgYHtyfQ0KDQoNCmRmcDEgPC0gT19QICU+JSANCiAgZmlsdGVyKG9wX3N0YXJ0X2RhdGUgPD0gMjAxNjAxMDEsICMgUmVtb3ZlIGluZGl2aWR1YWxzIHRoYXQgZG8gbm90IGhhdmUgYXQgbGVhc3QgMSB5ZWFyIG9mIEZVIGJlZm9yZSBzdGFydCBvZiBzdHVkeQ0KICAgICAgICAgb3BfZW5kX2RhdGUgPj0gMjAxNzAxMDIpICMgbWFrZSBzdXJlIHRoYXQgdGhlIGluZGl2aWR1YWxzIGF0IGxlYXN0IGhhdmUgMSBkYXkgb2YgZnUgZHVyaW5nIHN0dWR5IHBlcmlvZCANCmRmcDEkc3RhcnRfc3R1ZHkgPC0gMjAxNzAxMDENCmBgYA0KDQpgYGB7cn0NCiMgTWFrZSBzdXJlIHRoYXQgYWxsIGRhdGVzIGFyZSBpbiBEYXRlIGZvcm1hdCBZWVlZLU1NLUREDQpkZnAxIDwtIGRmcDEgJT4lIA0KICBtdXRhdGUob3Bfc3RhcnRfZGF0ZSA9IGFzLkRhdGUoeW1kKG9wX3N0YXJ0X2RhdGUpKSwNCiAgICAgICAgIG9wX2VuZF9kYXRlID0gYXMuRGF0ZSh5bWQob3BfZW5kX2RhdGUpKSwNCiAgICAgICAgIHN0YXJ0X3N0dWR5ID0gYXMuRGF0ZSh5bWQoc3RhcnRfc3R1ZHkpKSkNCmBgYA0KDQpgYGB7cn0NCnBlcnNvbnMgPC0gcGVyc29ucyAlPiUgDQogIG11dGF0ZShiaXJ0aGRhdGUgPSBhcy5EYXRlKHltZCh5ZWFyX29mX2JpcnRoKjEwMDAwK21vbnRoX29mX2JpcnRoKjEwMCtkYXlfb2ZfYmlydGgpKSwgIyBjYWxjdWxhdGUgdGhlIGJpcnRoIGRhdGUNCiAgICAgICAgIGFnZSA9IGFzLm51bWVyaWMoZGlmZnRpbWUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGFzLkRhdGUoeW1kKDIwMTcwMTAxKSksIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpcnRoZGF0ZSwgdW5pdHM9J2RheXMnKSkgLyAzNjUuMjUsICMgY2FsY3VsYXRlIHRoZSBhZ2UgDQogICAgICAgICBhZ2VfYmFuZHMgPSBjdXQoYWdlLCBicmVha3MgPSBjKDAsMTksMzksNTksNzksSW5mKSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZS5sb3dlc3QgPSBULGluY2x1ZGUuaGlnaGVzdCA9IFQsIA0KICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIlswLDE5XSIsJ1syMCwzOV0nLCAnWzQwLDU5XScsICdbNjAsNzldJywgJ1s4MCtdJykpICMgTWFrZSBzdXJlIHRoZSBhZ2VzIGFyZSBkaXZpZGVkIGluIGFnZSBiYW5kcyANCiAgICAgICAgICAgICAgICAgICAgICAgICApICU+JSANCiAgZmlsdGVyKGFnZSA+PSAwKQ0KYGBgDQoNCg0KDQojIyMjIFN0dWR5IHBvcHVsYXRpb24gey0jc3R1cG9wfQ0KDQpGb3IgdGhpcyByZXNlYXJjaCBwYXJ0aWN1bGFybHksIGluZGl2aWR1YWxzIHdobyB3ZXJlIGluIHRoZSBzdHVkeSBiZXR3ZWVuIDAxLzAxLzIwMTcgYW5kIDMxLzEyLzIwMjAgYXJlIGluY2x1ZGVkLiBJbiBhZGRpdGlvbiwgdGhlIHN0dWR5J3MgaW5jbHVzaW9uIGFuZCBleGNsdXNpb24gY3JpdGVyaWEgY29uc2lzdCBvZiB0aHJlZSByZXF1aXJlbWVudHMuIFRoZSBmaXJzdCByZXF1aXJlbWVudCBpcyB0aGF0IGluZGl2aWR1YWxzIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgeWVhciBvZiBmb2xsb3ctdXAgYmVmb3JlIHRoZSBzdHVkeSdzIHN0YXJ0IGRhdGUuIFRoZSBzZWNvbmQgcmVxdWlyZW1lbnQgaXMgdGhhdCBpbmRpdmlkdWFscyBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIGRheSBvZiBmb2xsb3ctdXAgYWZ0ZXIgdGhlIHN0dWR5J3Mgc3RhcnQgZGF0ZS4gTGFzdGx5LCB0aGUgc3R1ZHkgd2lsbCBub3QgY29uc2lkZXIgcmVwZWF0ZWQgZXZlbnRzLCBhbmQgaW5kaXZpZHVhbHMgd2lsbCBiZSBjZW5zb3JlZCBhdCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBhbiBldmVudC4gQWZ0ZXIgZnVsZmlsbGluZyB0aGUgYWZvcmVtZW50aW9uZWQgcmVxdWlyZW1lbnRzLCB3ZSBoYXZlIGEgc3R1ZHkgcG9wdWxhdGlvbiBvZiBfTl8gPSBgciBucm93KGRmcDEpYA0KDQojIyMjIERhdGEgUHJlcGVyYXRpb24gey0jZGF0cHJlcH0NCg0KUHJpb3IgdG8gdGhlIGFuYWx5c2lzLCB2YXJpb3VzIHRhYmxlcyBhcmUgcHJlcGFyZWQgYW5kIHRoZW4gY29tYmluZWQgaW4gb3JkZXIgdG8gb2J0YWluIHRoZSBpbmNpZGVuY2UgcmF0ZXMuIEZpcnN0IHRoZSBPQlNFUlZBVElPTl9QRVJJT0QgdGFibGUgd2FzIGxvYWRlZCBhbmQgaW5kaXZpZHVhbHMgd2hvIGFyZSBub3QgaW4gdGhlIGFib3ZlIG1lbnRpb25lZCBzdHVkeSBwb3B1bGF0aW9uLCB3aWxsIGJlIHJlbW92ZWQuIA0KDQpBZnRlciBkb2luZyB0aGlzLCB0aGUgUEVSU09OUyB0YWJsZSB3YXMgbG9hZGVkLiBJbiB0aGlzIHRhYmxlLCBhbiBhZ2UgdmFyaWFibGUgaXMgbWFkZSB3aXRoIHRoZSBiaXJ0aCBkYXRhIHZhcmlhYmxlLiBUaGUgYWdlIHdhcyBjcmVhdGVkIHdpdGggdGhlIHN0YXJ0IG9mIHRoZSBzdHVkeSBwZXJpb2QgYXMgcmVmZXJlbmNlLiB3aXRoIHRoaXMgYWdlIHZhcmlhYmxlLCB0aGUgZm9sbG93aW5nIGFnZSBiYW5kcyBhcmUgY3JlYXRlZDogMC0xOSwgMjAtMzksIDQwLTU5LCA2MC03OS4gVGhlIGFnZSBiYW5kIDgwKyBpcyBub3QgY3JlYXRlZCwgYmVjYXVzZSB0aGUgdGhlcmUgYXJlIG5vIGluZGl2aWR1YWxzIHdobyBhcmUgb2xkZXIgdGhhbiBgciByb3VuZChtYXgocGVyc29ucyRhZ2UpKWAuICANCg0KVGhlIG5leHQgc3RlcCBpbiB0aGUgZGF0ZSBwcmVwYXJhdGlvbiwgd2FzIG1lcmdpbmcgdGhlIE9CU0VSVkFUSU9OX1BFUklPRFMgYW5kIFBFUlNPTiB0YWJsZS4gV2Ugb25seSBrZXB0IHRoZSBpbmRpdmlkdWFscyB3aG8gYXJlIGluIHRoZSBPQlNFUlZBVElPTl9QRVJJT0RTIHRhYmxlLiANCg0KDQpXaGVuIHRoZSBhZm9yZW1lbnRpb25lZCB0YWJsZXMgYXJlIG1lcmdlZCwgQ29uY2VwdCBzZXRzIHdlcmUgY3JlYXRlZC4gVGhlc2Ugc2V0cyB3ZXJlIGNyZWF0ZWQgZnJvbSBkaWFnbm9zdGljIGNvZGVzIGZyb20gdGhlIGNvZGVzaGVldC4gQWxsIGRpYWdub3N0aWMgY29kZXMgYW5kIHZvY2FidWxhcnkgb2YgdGhlIGV2ZW50cyB1c2VkIHRvIG1ha2UgaW5jaWRlbmNlIHJhdGVzIGNhbiBiZSBmb3VuZCBpbiBUYWJsZSBcQHJlZihmaWc6Y29kZXMpDQoNCldoZW4gdGhlIGFmb3JlbWVudGlvbmVkIHRhYmxlcyBhcmUgbWVyZ2VkLCBDb25jZXB0IHNldHMgd2VyZSBjcmVhdGVkLiBUaGVzZSBzZXRzIHdlcmUgY3JlYXRlZCBmcm9tIGRpYWdub3N0aWMgY29kZXMgZnJvbSB0aGUgY29kZXNoZWV0LiBBbGwgZGlhZ25vc3RpYyBjb2RlcyBhbmQgdm9jYWJ1bGFyeSBvZiB0aGUgZXZlbnRzIHdlIHdpbGwgbWFrZSBpbmNpZGVuY2UgcmF0ZXMgb2YgY2FuIGJlIGZvdW5kIGluIFRhYmxlIFxAcmVmKGZpZzpjb2RlcykuDQoNCg0KTGFzdGx5LCB0aGUgRVZFTlRTIHRhYmxlIGlzIGxvYWRlZCwgYW5kIG1lcmdlZCB3aXRoIHRoZSBldmVudCBjb2Rlcy4gVGVsbCBzb21ldGhpbmcgYWJvdXQgd2hhdCB3ZSBkaWQgYW5kIHdoeQ0KDQphLiBNZXJnZSB3aXRoIHRoZSBhYm92ZSBkYXRhIHNldC4NCmIuIExvb2sgYXQgdGhlIGRhdGVzIG9mIGV2ZW50cy4gV2hhdCBkb2VzIGl0IG1lYW4gaWYgYW4gZXZlbnQgZGF0ZSBpcyByZWNvcmRlZCBiZWZvcmUNCnN0YXJ0IG9mIHN0dWR5IG9yIGFmdGVyIGVuZCBvZiBzdHVkeT8gU2hvdWxkIHRoZXNlIG9ic2VydmF0aW9ucyBiZSBkaXNjYXJkZWQgb3Igbm90Pw0KTWFrZSB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyB0byB0aGUgdGFibGUuDQpjLiBNYWtlIHN1cmUgdG8gcmVtb3ZlIHJlcGVhdGVkIGV2ZW50cyhtb3JlIHRoYW4gMSBldmVudCBmb3IgdGhlIHNhbWUgaW5kaXZpZHVhbCkuDQoNCiMjIyMgQW5hbHlpcyB7LSNhbmFsfQ0KDQpcWw0KXHRleHR7SW5jaWRlbmNlIFJhdGVzIG92ZXJhbGx9ID0gXGZyYWN7VG90YWwgXCBudW1iZXIgXCBvZiBcIGV2ZW50c317VG90YWwgXCBwZXJzb24teWVhcnN9DQpcXQ0KDQpcWw0KICBcdGV4dHtJbmNpZGVuY2UgcmF0ZXMgYnkgeWVhcn0gPSBcZnJhY3t0b3RhbCBcICBudW1iZXIgXCBvZiBcIGV2ZW50cyBcIGZvciBcIGVhY2ggXCB5ZWFyfSB7IHBlcnNvbi15ZWFycyBcIGZvciBcIGVhY2ggXCB5ZWFyfSANClxdDQoNCg0KXFsNCiAgXHRleHR7SW5jaWRlbmNlIHJhdGVzIGJ5IHllYXIgYnkgYWdlIGJhbmRzfSA9IFxmcmFje1RvdGFsIFwgbnVtYmVyIFwgb2YgXCBldmVudHMgZm9yIFwgZWFjaCBcIHllYXIgXCAgcGVyIFwgIGFnZSBcIGJhbmR9e3BlcnNvbi15ZWFycyBcIGZvciBcIGVhY2ggXCB5ZWFyIFwgIHBlciBcIGFnZSBcIGJhbmR9DQpcXQ0KDQoNCg0KDQoNCiMjIyBSZXN1bHRzIHstI3Jlc30NCg0KIyMjIExlc3NvbnMgbGVhcm5lZCB7LSNsZXNzfQ0KQW5uZXggMTogcXVhbGl0eSBjaGVjayBmaW5kaW5ncyBkYXkgNg0KDQoNCg0KDQoNCg0KDQpgYGB7cn0NCmRhdGEgPC0gbGVmdF9qb2luKGRmcDEsIHBlcnNvbnMsIGJ5ID0gInBlcnNvbl9pZCIpICMgbWVyZ2UgdGhlIE9CU0VSVkFUSU9OX1BFUklPRFMgYW5kIFBFUlNPTlMgdGFibGUgKGtlZXAgb25seSBpbmRpdmlkdWFscyB3aG8gYXJlIGluIE9CU0VSVkFUSU9OU19QRVJJT0RTIHRhYmxlKQ0KYGBgDQoNCg0KDQpgYGB7ciBjb2RlcywgcmVzdWx0cz0nYXNpcycsIGZpZy5jYXAgPSAnQSB0YWJsZSd9DQphbmFwaHlsIDwtIGNvZGVsaXN0ICU+JSANCiAgZmlsdGVyKGBDb2Rpbmcgc3lzdGVtYD09IGMoJ0lDRDknLCAnSUNEMTAvQ00nKSkNCg0KZ2JzIDwtIGNvZGVsaXN0MiAlPiUgDQogIGZpbHRlcihgQ29kaW5nIHN5c3RlbWA9PSBjKCdJQ0Q5JywgJ0lDRDEwL0NNJykpDQoNCmNvZGVzIDwtIGRhdGEudGFibGUoRGlhZ25vc2lzID0gcGFzdGUwKCdhbmFwaHlsXycsYW5hcGh5bCRBbGdvcml0aG0sc2VwID0gIiIpLCANCiAgICAgICAgICAgICAgICBldmVudF9jb2RlID0gYW5hcGh5bCRDb2RlLCANCiAgICAgICAgICAgICAgICBWb2NhYnVsYXJ5ID0gYW5hcGh5bCRgQ29kaW5nIHN5c3RlbWApDQoNCmdic3RlbXAgPC0gZGF0YS50YWJsZShEaWFnbm9zaXMgPSBwYXN0ZTAoJ2dic18nLGdicyRBbGdvcml0aG0sc2VwID0gIiIpLCANCiAgICAgICAgICAgICAgICBldmVudF9jb2RlID0gZ2JzJENvZGUsIA0KICAgICAgICAgICAgICAgIFZvY2FidWxhcnkgPSBnYnMkYENvZGluZyBzeXN0ZW1gKQ0KDQpjb2RlcyA8LSByYmluZChjb2RlcywgZ2JzdGVtcCkNCg0KZGF0YXRhYmxlKGNvZGVzLCANCiAgICAgICAgICBjYXB0aW9uPSdEaWFnbm9zdGljIGNvZGVzIHJldHJpZXZlZCBmcm9tIHRoZSAuLiBDb2Rlc2hlZXQgJywNCiAgICAgICAgICBjbGFzcz0nY2VsbC1ib3JkZXIgc3RyaXBlJywgDQogICAgICAgICAgcm93bmFtZXM9RiwgDQogICAgICAgICAgY29sbmFtZXM9YygnRGlhZ25vc2lzJywgJ0V2ZW50IENvZGUnLCAnVm9jYWJ1bGFyeScpLA0KICAgICAgICAgIGV4dGVuc2lvbnM9J0J1dHRvbnMnLA0KICAgICAgICAgIG9wdGlvbnMgPSBsaXN0KGRvbSA9ICdCZnJ0aXAnLCBidXR0b25zID0gYygnY29weScsICdjc3YnLCAnZXhjZWwnLCAncGRmJywgJ3ByaW50JykNCiAgICAgICAgICApKSMjIERlemUgb3AgbGF0ZXIgbW9tZW50IG5vZyB3YXQgbW9vaWVyIG1ha2VuIA0KDQpgYGANCg0KDQoNCmBgYHtyfQ0KZGZwMiA8LSBtZXJnZShjb2RlcywgZXZlbnRzLCBieSA9ICdldmVudF9jb2RlJykNCmRmcDIgPC0gZGZwMiAlPiUgDQogIGZpbHRlcihzdGFydF9kYXRlX3JlY29yZCA+IDIwMTcwMTAxLA0KICAgICAgICAgc3RhcnRfZGF0ZV9yZWNvcmQgPCAyMDIxMDEwMSkgJT4lIA0KICBhcnJhbmdlKHN0YXJ0X2RhdGVfcmVjb3JkKQ0KDQpkZnAyIDwtIGRmcDJbIWR1cGxpY2F0ZWQoZGZwMiRwZXJzb25faWQpXQ0KZGZwMiRlbmRfZGF0ZV9yZWNvcmQgPC0gZGZwMiRzdGFydF9kYXRlX3JlY29yZA0KZGZwMiRpc19ldmVudCA8LSAxDQoNCmBgYA0KDQpgYGB7cn0NCmRmdG90YWwgPC0gbGVmdF9qb2luKGRhdGEsZGZwMiwgYnkgPSAncGVyc29uX2lkJykNCmRmdG90YWwkaXNfZXZlbnRbaXMubmEoZGZ0b3RhbCRpc19ldmVudCldIDwtIDANCmBgYA0KDQpgYGB7cn0NCiMgZWluZGUgdmFuIGRlIHN0dWRpZSBwZXJpb2RlIG9wIGhldCBtb21lbnQgZGF0IGVyIGVlbiBldmVudCBpcyBiaWogZWVuIG9ic2VydmF0aWUNCmRmdG90YWwkZW5kX2luY2lkZW5jZSA8LSBhcy5EYXRlKHltZChkZnRvdGFsJGVuZF9kYXRlX3JlY29yZCkpDQojIFdoZW4gb2JzZXJ2YXRpb24gZG9lcyBub3QgaGF2ZSBhbiBldmVudCwgbWFrZSBzdXJlIGVuZF9pbmNpZGVuY2UgaXMgY29kZWQgYXMgZW5kIHN0dWR5IHBlcmlvZCAoMjAyMS0wMS0wMSkNCmRmdG90YWwkZW5kX2luY2lkZW5jZVtpcy5uYShkZnRvdGFsJGVuZF9pbmNpZGVuY2UpXSA8LSBhcy5EYXRlKHltZCgyMDIxMDEwMSkpIA0KI0NhbGN1bGF0ZSBob3cgbWFueSB5ZWFycyBlYWNoIG9ic2VydmFpdG9uIHdhcyBpbiB0aGUgc3R1ZHkuIA0KZGZ0b3RhbCR5ZWFyc19pbl9zdHVkeSA8LSBhcy5udW1lcmljKGRpZmZ0aW1lDQogICAgICAgICAgICAgICAgICAgICAgICAgIChkZnRvdGFsJGVuZF9pbmNpZGVuY2UsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRmdG90YWwkc3RhcnRfc3R1ZHksIHVuaXRzPSdkYXlzJykpIC8gMzY1LjI1DQoNCmBgYA0KDQoNCmBgYHtyfQ0KI21ha2luZyBJUiB3aXRoIDk1JSBDSSANCklSXzk1X0NJIDwtIGZ1bmN0aW9uKGV2ZW50cywgcHksIE4pew0KICB0bXAgPC0gYXMubWF0cml4KGNiaW5kKGV2ZW50cywgcHkpKQ0KICBjb25mX2ludHMgPC0gcm91bmQoZXBpLmNvbmYodG1wLCBjdHlwZSA9ICJpbmMucmF0ZSIsIG1ldGhvZCA9ICJleGFjdCIsIE4gPSBOLCBkZXNpZ24gPSAxLCANCiAgIGNvbmYubGV2ZWwgPSAwLjk1KSAqIDEwMDAsIDIpDQogIHJldHVybihjb25mX2ludHMpDQp9DQpgYGANCg0KPCEtLSBVbG0gSyAoMTk5MCkuIEEgc2ltcGxlIG1ldGhvZCB0byBjYWxjdWxhdGUgdGhlIGNvbmZpZGVuY2UgaW50ZXJ2YWwgb2YgYSBzdGFuZGFyZGl6ZWQgbW9ydGFsaXR5IHJhdGlvLiBBbWVyaWNhbiBKb3VybmFsIG9mIEVwaWRlbWlvbG9neSAxMzE6IDM3MyAtIDM3NSAtLT4NCg0KDQoNCmBgYHtyfQ0KI3RvdGFsIFBZIGluIHN0dWR5IHBlcmlvZA0KVFBZIDwtIHN1bShkZnRvdGFsJHllYXJzX2luX3N0dWR5KQ0KDQojY2FsY3VsYXRlIHRoZSBhbW91bnQgb2YgYW5hcGggc2hvY2tzIFBvc3NpYmxlIGluIHN0dWR5IHBlcmlvZCANClRORV9hbmFwaFAgPC0gZGZ0b3RhbCAlPiUgDQogIGZpbHRlcihEaWFnbm9zaXMgPT0gJ2FuYXBoeWxfcG9zc2libGUnKSAlPiUgbnJvdygpDQoNCiMgSW5jaWRlbmNlIFJhdGUgZm9yIGFuYXBoIHNob2NrIHBvc3NpYmxlIGluIHN0dWR5IHBlcmlvZCANCg0KDQppcm9fYW5hcGhQIDwtICBJUl85NV9DSShUTkVfYW5hcGhQLCBUUFksIG5yb3coZGF0YSkpDQoNCg0KI2NhbGN1bGF0ZSB0aGUgYW1vdW50IG9mIGFuYXBoIHNob2NrcyBuYXJyb3cgaW4gc3R1ZHkgcGVyaW9kIA0KVE5FX2FuYXBoTiA8LSBkZnRvdGFsICU+JSANCiAgZmlsdGVyKERpYWdub3NpcyA9PSAnYW5hcGh5bF9uYXJyb3cnKSAlPiUgbnJvdygpDQoNCiMgSVIgZm9yIGFuYXBoIHNob2NrIG5hcnJvdyBpbiBzdHVkeSBwZXJpb2QNCmlyb19hbmFwaE4gPC0gSVJfOTVfQ0koVE5FX2FuYXBoTiwgVFBZLCBucm93KGRhdGEpKQ0KDQojIGFtb3VudCBvZiBnYnMgY2FzZXMgaW4gc3R1ZHkgcGVyaW9kDQpUTkVfZ2JzIDwtIGRmdG90YWwgJT4lIA0KICBmaWx0ZXIoRGlhZ25vc2lzID09ICdnYnNfbmFycm93JykgJT4lIG5yb3coKQ0KDQojIElSIGZvciBnYnMgaW4gc3R1ZHkgcGVyaW9kDQppcm9fZ2JzIDwtIElSXzk1X0NJKFRORV9nYnMsIFRQWSwgbnJvdyhkYXRhKSkNCmBgYA0KDQoNCg0KDQpgYGB7cn0NCiMgQWRkIGZvciBldmVyeSBvYnNlcnZhdGlvbnMgd2l0aCBhbiBldmVudCB0aGUgZGF0ZSBvZiB0aGUgZXZlbnQgaW4gdGhlIGRhdGFzZXQuIA0KZGZ0b3RhbCRlbmRfaW5jaWRlbmNlXzIwMTcgPC0gYXMuRGF0ZSh5bWQoZGZ0b3RhbCRlbmRfZGF0ZV9yZWNvcmQpKSANCiMgZm9yIGV2ZXJ5IG9ic2VydnRpb24gd2hvIGRvZXMgbm90IGhhdmUgYW4gZXZlbnQsIG1ha2Ugc3VyZSB0aGVzZSB3aWxsIGdldCB0aGUgc3RhcnQgb2YgMjAxOCBhcyBlbmQgZGF0ZSwgc2luY2Ugd2Ugd2FudCB0byBjYWxjdWxhdGUgdGhlIElSIGZvciAyMDE3DQpkZnRvdGFsJGVuZF9pbmNpZGVuY2VfMjAxN1tpcy5uYShkZnRvdGFsJGVuZF9pbmNpZGVuY2VfMjAxNyldIDwtIGFzLkRhdGUoeW1kKDIwMTgwMTAxKSkNCg0KIyBJZiBvYnNlcnZhdGlvbiBoYXMgYW4gZXZlbnQgYWZ0ZXIgMjAxNywgaXQgd2lsbCBiZWNvbWUgdGhlIGVuZCBvZiB0aGUgb2JzIHBlcmlvZCAoMjAxOC0wMS0wMSkNCmRmdG90YWwkZW5kX2luY2lkZW5jZV8yMDE3IDwtIGFzLkRhdGUoaWZlbHNlKHllYXIoZGZ0b3RhbCRlbmRfaW5jaWRlbmNlXzIwMTcpID4gMjAxNywgYXMuRGF0ZSgiMjAxOC0wMS0wMSIpLCBkZnRvdGFsJGVuZF9pbmNpZGVuY2VfMjAxNyksIG9yaWdpbiA9ICIxOTcwLTAxLTAxIikNCmBgYA0KDQoNCg0KYGBge3J9DQojIE1ha2UgZW5kIGluY2lkZW5jZSBmb3IgZXZlcnkgeWVhcg0KZGZfMjAxOCA8LSANCiAgZGZ0b3RhbCAlPiUgDQogIGZpbHRlcigheWVhcihlbmRfaW5jaWRlbmNlKSA9PSAyMDE3KQ0KDQpkZl8yMDE5IDwtIA0KICBkZl8yMDE4ICU+JSANCiAgZmlsdGVyKCF5ZWFyKGVuZF9pbmNpZGVuY2UpID09IDIwMTgpDQoNCmRmXzIwMjAgPC0gDQogIGRmXzIwMTkgJT4lIA0KICBmaWx0ZXIoIXllYXIoZW5kX2luY2lkZW5jZSkgPT0gMjAxOSkNCg0KZGZfMjAyMSA8LSANCiAgZGZfMjAyMCAlPiUgDQogIGZpbHRlcigheWVhcihlbmRfaW5jaWRlbmNlKSA9PSAyMDIwKSANCg0KDQoNCmBgYA0KDQoNCg0KYGBge3J9DQojIGNhbGN1bGF0ZSBmb3IgZWFjaCBpbmRpdmlkdWFsIHRoZSBweSBvYnNlcnZlZCBpbiAyMDE3LiANCmRmdG90YWwkeWVhcnNfaW5fc3R1ZHlfMjAxNyA8LSBhcy5udW1lcmljKGRpZmZ0aW1lDQogICAgICAgICAgICAgICAgICAgICAgICAgIChkZnRvdGFsJGVuZF9pbmNpZGVuY2VfMjAxNywgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGZ0b3RhbCRzdGFydF9zdHVkeSwgdW5pdHM9J2RheXMnKSkgLyAzNjUNCmBgYA0KDQoNCmBgYHtyfQ0KIyBDYWxjdWxhdGUgdGhlIGV2ZW50cyBpbiAyMDE3DQpldmVudHNfMjAxNyA8LSBzdWJzZXQoZGZ0b3RhbCwgeWVhcihlbmRfaW5jaWRlbmNlKSA9PSAyMDE3KSANCg0KI3RoZSBUb3RhbCBwZXJzb255ZWFycyBmb3IgYW4gZXZlbnQgaW4gMjAxNw0KVFBZXzIwMTcgPC0gc3VtKGRmdG90YWwkeWVhcnNfaW5fc3R1ZHlfMjAxNykNCg0KIyBDb3VudCB0aGUgYW1vdW50IG9mIGFuYXBoeWwgcG9zc2libGUgc2hvY2tzIGluIDIwMTcgDQpUTkVfYW5hcGhQXzIwMTcgPC0gZXZlbnRzXzIwMTcgJT4lIA0KICBmaWx0ZXIoRGlhZ25vc2lzID09ICdhbmFwaHlsX3Bvc3NpYmxlJykgJT4lIG5yb3coKQ0KDQojIGNhbGN1bGF0ZSB0aGUgSVIgaW4gMTAwMCBQWSBmb3IgYW5hcGh5bCBwb3NzaWJsZSBpbiAyMDE3DQppcm9fYW5hcGhQXzIwMTcgPC0gSVJfOTVfQ0koVE5FX2FuYXBoUF8yMDE3LCBUUFlfMjAxNywgbnJvdyhkZl90b3RhbCkpDQoNCg0KIyBDb3VudCB0aGUgYW1vdW50IG9mIGFuYXBoeWwgc2hvY2tzIG5hcnJvdyBpbiAyMDE3IA0KVE5FX2FuYXBoTl8yMDE3IDwtIGV2ZW50c18yMDE3ICU+JSANCiAgZmlsdGVyKERpYWdub3NpcyA9PSAnYW5hcGh5bF9uYXJyb3cnKSAlPiUgbnJvdygpDQoNCiMgY2FsY3VsYXRlIHRoZSBJUiBpbiAxMDAwIFBZIGZvciBhbmFwaHlsIG5hcnJvdyBpbiAyMDE3DQppcm9fYW5hcGhOXzIwMTcgPC0gSVJfOTVfQ0koVE5FX2FuYXBoTl8yMDE3LCBUUFlfMjAxNywgbnJvdyhkZl90b3RhbCkpDQoNCiMgQ291bnQgdGhlIGFtb3VudCBvZiBnYnMgaW4gMjAxNyANClRORV9nYnNfMjAxNyA8LSBldmVudHNfMjAxNyAlPiUgDQogIGZpbHRlcihEaWFnbm9zaXMgPT0gJ2dic19uYXJyb3cnKSAlPiUgbnJvdygpDQoNCiMgY2FsY3VsYXRlIHRoZSBJUiBpbiAxMDAwIFBZIGZvciBnYnMgaW4gMjAxNw0KaXJvX2dic18yMDE3IDwtIElSXzk1X0NJKFRORV9nYnNfMjAxNywgVFBZXzIwMTcsIG5yb3coZGZfdG90YWwpKQ0KYGBgDQoNCg0KDQpgYGB7cn0NCiMgZm9yIGV2ZXJ5IG9ic2VydmF0aW9uIHdobyBoYXMgYW4gZXZlbnQgcHV0IGluIHRoZSBkYXRlLiANCmRmXzIwMTgkZW5kX2luY2lkZW5jZV8yMDE4IDwtIGFzLkRhdGUoeW1kKGRmXzIwMTgkZW5kX2RhdGVfcmVjb3JkKSkNCg0KI2ZvciBldmVyeWJvZHkgd2hvIGRvZXMgbm90IGhhdmUgYW4gZXZlbnQsIG1ha2Ugc3VyZSB0aGUgZW5kIG9mIGluY2lkZW5jZSBpcyAwMS0wMS0yMDE5LiANCmRmXzIwMTgkZW5kX2luY2lkZW5jZV8yMDE4W2lzLm5hKGRmXzIwMTgkZW5kX2luY2lkZW5jZV8yMDE4KV0gPC0gYXMuRGF0ZSh5bWQoMjAxOTAxMDEpKQ0KDQojIElmIGFuIG9ic2VydmF0aW9uIGhhcyB0aGUgZXZlbnQgYWZ0ZXIgMjAxOCwgdGhlIGVuZCBvZiB0aGUgb2JzZXJ2YXRpb24gd2lsbCBiZSAwMS0wMS0yMDE5DQpkZl8yMDE4JGVuZF9pbmNpZGVuY2VfMjAxOCA8LSBhcy5EYXRlKGlmZWxzZSh5ZWFyKGRmXzIwMTgkZW5kX2luY2lkZW5jZV8yMDE4KSA+IDIwMTgsIGFzLkRhdGUoIjIwMTktMDEtMDEiKSwgZGZfMjAxOCRlbmRfaW5jaWRlbmNlXzIwMTgpLCBvcmlnaW4gPSAiMTk3MC0wMS0wMSIpDQpkZl8yMDE4JHN0YXJ0X2luY2lkZW5jZV8yMDE4IDwtIGFzLkRhdGUoeW1kKDIwMTgwMTAxKSkNCg0KIyBDb3VudCB0aGUgcGVyc29uIHllYXJzIG9mIHRoZSBvYnNlcnZhdGlvbiBpbiAyMDE4DQpkZl8yMDE4JHllYXJzX2luX3N0dWR5XzIwMTggPC0gYXMubnVtZXJpYyhkaWZmdGltZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAoZGZfMjAxOCRlbmRfaW5jaWRlbmNlXzIwMTgsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRmXzIwMTgkc3RhcnRfaW5jaWRlbmNlXzIwMTgsIHVuaXRzPSdkYXlzJykpIC8gMzY1DQoNCmBgYA0KDQoNCmBgYHtyfQ0KDQojIEFsbCB0aGUgZXZlbnRzIGluIDIwMTggaW4gYSBuZXcgZGF0YXNldA0KZXZlbnRzXzIwMTggPC0gc3Vic2V0KGRmdG90YWwsIHllYXIoZW5kX2luY2lkZW5jZSkgPT0gMjAxOCkgDQoNCiMgVG90YWwgcGVyc29uIHllYXJzIG9ic2VydmVkIGluIDIwMTgNClRQWV8yMDE4IDwtIHN1bShkZl8yMDE4JHllYXJzX2luX3N0dWR5XzIwMTgpDQoNCiMgQW1vdW50IG9mIGV2ZW50cyBvZiBhbmFwaHlsYXRpYyBzaG9jayBwb3NzaWJsZSBpbiAyMDE4IA0KVE5FX2FuYXBoUF8yMDE4IDwtIGV2ZW50c18yMDE4ICU+JSANCiAgZmlsdGVyKERpYWdub3NpcyA9PSAnYW5hcGh5bF9wb3NzaWJsZScpICU+JSBucm93KCkNCg0KIyBJbmNpZGVuY2UgcmF0ZSBpbiAxMDAwIFBZIGZvciBhbmFwaGFseXRpYyBzaG9jayBwb3NzaWJsZSBpbiAyMDE4DQppcm9fYW5hcGhQXzIwMTggPC0gSVJfOTVfQ0koVE5FX2FuYXBoUF8yMDE4LCBUUFlfMjAxOCwgbnJvdyhkZl8yMDE4KSkNCg0KDQojIEFtb3VudCBvZiBldmVudHMgb2YgYW5hcGh5bGF0aWMgc2hvY2sgbmFycm93IGluIDIwMTggDQpUTkVfYW5hcGhOXzIwMTggPC0gZXZlbnRzXzIwMTggJT4lIA0KICBmaWx0ZXIoRGlhZ25vc2lzID09ICdhbmFwaHlsX25hcnJvdycpICU+JSBucm93KCkNCg0KIyBJUiBpbiAxMDAwIFBZIGZvciBhbmFwaGFseXRpYyBzaG9jayBuYXJvb3cgaW4gMjAxOA0KaXJvX2FuYXBoTl8yMDE4IDwtICBJUl85NV9DSShUTkVfYW5hcGhOXzIwMTgsIFRQWV8yMDE4LCBucm93KGRmXzIwMTgpKQ0KDQoNCiMgQW1vdW50IG9mIGV2ZW50cyBvZiBHQlMgaW4gMjAxOCANClRORV9nYnNfMjAxOCA8LSBldmVudHNfMjAxOCAlPiUgDQogIGZpbHRlcihEaWFnbm9zaXMgPT0gJ2dic19uYXJyb3cnKSAlPiUgbnJvdygpDQoNCiNJUiBmb3IgZ2JzIGluIDEwMDAgUFkNCmlyb19nYnNfMjAxOCA8LSAgSVJfOTVfQ0koVE5FX2dic18yMDE4LCBUUFlfMjAxOCwgbnJvdyhkZl8yMDE4KSkNCmBgYA0KDQoNCg0KDQpgYGB7cn0NCiMgZm9yIGV2ZXJ5IG9ic2VydmF0aW9uIHdobyBoYXMgYW4gZXZlbnQgcHV0IGluIHRoZSBkYXRlLiANCmRmXzIwMTkkZW5kX2luY2lkZW5jZV8yMDE5IDwtIGFzLkRhdGUoeW1kKGRmXzIwMTkkZW5kX2RhdGVfcmVjb3JkKSkNCg0KI2ZvciBldmVyeWJvZHkgd2hvIGRvZXMgbm90IGhhdmUgYW4gZXZlbnQsIG1ha2Ugc3VyZSB0aGUgZW5kIG9mIGluY2lkZW5jZSBpcyAwMS0wMS0yMDE5LiANCmRmXzIwMTkkZW5kX2luY2lkZW5jZV8yMDE5W2lzLm5hKGRmXzIwMTkkZW5kX2luY2lkZW5jZV8yMDE5KV0gPC0gYXMuRGF0ZSh5bWQoMjAyMDAxMDEpKQ0KDQojIElmIGFuIG9ic2VydmF0aW9uIGhhcyB0aGUgZXZlbnQgYWZ0ZXIgMjAxOCwgdGhlIGVuZCBvZiB0aGUgb2JzZXJ2YXRpb24gd2lsbCBiZSAwMS0wMS0yMDE5DQpkZl8yMDE5JGVuZF9pbmNpZGVuY2VfMjAxOSA8LSBhcy5EYXRlKGlmZWxzZSh5ZWFyKGRmXzIwMTkkZW5kX2luY2lkZW5jZV8yMDE5KSA+IDIwMTksIGFzLkRhdGUoIjIwMjAtMDEtMDEiKSwgZGZfMjAxOSRlbmRfaW5jaWRlbmNlXzIwMTkpLCBvcmlnaW4gPSAiMTk3MC0wMS0wMSIpDQpkZl8yMDE5JHN0YXJ0X2luY2lkZW5jZV8yMDE5IDwtIGFzLkRhdGUoeW1kKDIwMTkwMTAxKSkNCg0KIyBDb3VudCB0aGUgcGVyc29uIHllYXJzIG9mIHRoZSBvYnNlcnZhdGlvbiBpbiAyMDE4DQpkZl8yMDE5JHllYXJzX2luX3N0dWR5XzIwMTkgPC0gYXMubnVtZXJpYyhkaWZmdGltZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAoZGZfMjAxOSRlbmRfaW5jaWRlbmNlXzIwMTksIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRmXzIwMTkkc3RhcnRfaW5jaWRlbmNlXzIwMTksIHVuaXRzPSdkYXlzJykpIC8gMzY1DQoNCmBgYA0KDQoNCmBgYHtyfQ0KDQojIEFsbCB0aGUgZXZlbnRzIGluIDIwMTkgaW4gYSBuZXcgZGF0YXNldA0KZXZlbnRzXzIwMTkgPC0gc3Vic2V0KGRmdG90YWwsIHllYXIoZW5kX2luY2lkZW5jZSkgPT0gMjAxOSkgDQoNCiMgVG90YWwgcGVyc29uIHllYXJzIG9ic2VydmVkIGluIDIwMTkNClRQWV8yMDE5IDwtIHN1bShkZl8yMDE5JHllYXJzX2luX3N0dWR5XzIwMTkpDQoNCiMgQW1vdW50IG9mIGV2ZW50cyBvZiBhbmFwaHlsYXRpYyBzaG9jayBwb3NzaWJsZSBpbiAyMDE5IA0KVE5FX2FuYXBoUF8yMDE5IDwtIGV2ZW50c18yMDE5ICU+JSANCiAgZmlsdGVyKERpYWdub3NpcyA9PSAnYW5hcGh5bF9wb3NzaWJsZScpICU+JSBucm93KCkNCg0KIyBJbmNpZGVuY2UgcmF0ZSBpbiAxMDAwIFBZIGZvciBhbmFwaGFseXRpYyBzaG9jayBwb3NzaWJsZSBpbiAyMDE5DQppcm9fYW5hcGhQXzIwMTkgPC0gIElSXzk1X0NJKFRORV9hbmFwaFBfMjAxOSwgVFBZXzIwMTksIG5yb3coZGZfMjAxOSkpDQoNCg0KIyBBbW91bnQgb2YgZXZlbnRzIG9mIGFuYXBoeWxhdGljIHNob2NrIG5hcnJvdyBpbiAyMDE5IA0KVE5FX2FuYXBoTl8yMDE5IDwtIGV2ZW50c18yMDE5ICU+JSANCiAgZmlsdGVyKERpYWdub3NpcyA9PSAnYW5hcGh5bF9uYXJyb3cnKSAlPiUgbnJvdygpDQoNCiMgSVIgaW4gMTAwMCBQWSBmb3IgYW5hcGhhbHl0aWMgc2hvY2sgbmFyb293IGluIDIwMTkNCmlyb19hbmFwaE5fMjAxOSA8LSBJUl85NV9DSShUTkVfYW5hcGhOXzIwMTksIFRQWV8yMDE5LCBucm93KGRmXzIwMTkpKQ0KDQoNCiMgQW1vdW50IG9mIGV2ZW50cyBvZiBHQlMgaW4gMjAxOSANClRORV9nYnNfMjAxOSA8LSBldmVudHNfMjAxOSAlPiUgDQogIGZpbHRlcihEaWFnbm9zaXMgPT0gJ2dic19uYXJyb3cnKSAlPiUgbnJvdygpDQoNCiNJUiBmb3IgZ2JzIGluIDEwMDAgUFkNCmlyb19nYnNfMjAxOSA8LSBJUl85NV9DSShUTkVfZ2JzXzIwMTksIFRQWV8yMDE5LCBucm93KGRmXzIwMTkpKQ0KYGBgDQoNCg0KYGBge3J9DQojIGZvciBldmVyeSBvYnNlcnZhdGlvbiB3aG8gaGFzIGFuIGV2ZW50IHB1dCBpbiB0aGUgZGF0ZS4gDQpkZl8yMDIwJGVuZF9pbmNpZGVuY2VfMjAyMCA8LSBhcy5EYXRlKHltZChkZl8yMDIwJGVuZF9kYXRlX3JlY29yZCkpDQoNCiNmb3IgZXZlcnlib2R5IHdobyBkb2VzIG5vdCBoYXZlIGFuIGV2ZW50LCBtYWtlIHN1cmUgdGhlIGVuZCBvZiBpbmNpZGVuY2UgaXMgMDEtMDEtMjAyMS4gDQpkZl8yMDIwJGVuZF9pbmNpZGVuY2VfMjAyMFtpcy5uYShkZl8yMDIwJGVuZF9pbmNpZGVuY2VfMjAyMCldIDwtIGFzLkRhdGUoeW1kKDIwMjEwMTAxKSkNCg0KIyBJZiBhbiBvYnNlcnZhdGlvbiBoYXMgdGhlIGV2ZW50IGFmdGVyIDIwMTgsIHRoZSBlbmQgb2YgdGhlIG9ic2VydmF0aW9uIHdpbGwgYmUgMDEtMDEtMjAyMA0KZGZfMjAyMCRlbmRfaW5jaWRlbmNlXzIwMjAgPC0gYXMuRGF0ZShpZmVsc2UoeWVhcihkZl8yMDIwJGVuZF9pbmNpZGVuY2VfMjAyMCkgPiAyMDIwLCBhcy5EYXRlKCIyMDIxLTAxLTAxIiksIGRmXzIwMjAkZW5kX2luY2lkZW5jZV8yMDIwKSwgb3JpZ2luID0gIjE5NzAtMDEtMDEiKQ0KZGZfMjAyMCRzdGFydF9pbmNpZGVuY2VfMjAyMCA8LSBhcy5EYXRlKHltZCgyMDIwMDEwMSkpDQoNCiMgQ291bnQgdGhlIHBlcnNvbiB5ZWFycyBvZiB0aGUgb2JzZXJ2YXRpb24gaW4gMjAxOA0KZGZfMjAyMCR5ZWFyc19pbl9zdHVkeV8yMDIwIDwtIGFzLm51bWVyaWMoZGlmZnRpbWUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRmXzIwMjAkZW5kX2luY2lkZW5jZV8yMDIwLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZl8yMDIwJHN0YXJ0X2luY2lkZW5jZV8yMDIwLCB1bml0cz0nZGF5cycpKSAvIDM2Ng0KDQpgYGANCg0KDQpgYGB7cn0NCg0KIyBBbGwgdGhlIGV2ZW50cyBpbiAyMDIwIGluIGEgbmV3IGRhdGFzZXQNCmV2ZW50c18yMDIwIDwtIHN1YnNldChkZnRvdGFsLCB5ZWFyKGVuZF9pbmNpZGVuY2UpID09IDIwMjApIA0KDQojIFRvdGFsIHBlcnNvbiB5ZWFycyBvYnNlcnZlZCBpbiAyMDIwDQpUUFlfMjAyMCA8LSBzdW0oZGZfMjAyMCR5ZWFyc19pbl9zdHVkeV8yMDIwKQ0KDQojIEFtb3VudCBvZiBldmVudHMgb2YgYW5hcGh5bGF0aWMgc2hvY2sgcG9zc2libGUgaW4gMjAyMCANClRORV9hbmFwaFBfMjAyMCA8LSBldmVudHNfMjAyMCAlPiUgDQogIGZpbHRlcihEaWFnbm9zaXMgPT0gJ2FuYXBoeWxfcG9zc2libGUnKSAlPiUgbnJvdygpDQoNCiMgSW5jaWRlbmNlIHJhdGUgaW4gMTAwMCBQWSBmb3IgYW5hcGhhbHl0aWMgc2hvY2sgcG9zc2libGUgaW4gMjAyMA0KaXJvX2FuYXBoUF8yMDIwIDwtIElSXzk1X0NJKFRORV9hbmFwaFBfMjAyMCwgVFBZXzIwMjAsIG5yb3coZGZfMjAyMCkpDQoNCg0KIyBBbW91bnQgb2YgZXZlbnRzIG9mIGFuYXBoeWxhdGljIHNob2NrIG5hcnJvdyBpbiAyMDIwIA0KVE5FX2FuYXBoTl8yMDIwIDwtIGV2ZW50c18yMDIwICU+JSANCiAgZmlsdGVyKERpYWdub3NpcyA9PSAnYW5hcGh5bF9uYXJyb3cnKSAlPiUgbnJvdygpDQoNCiMgSVIgaW4gMTAwMCBQWSBmb3IgYW5hcGhhbHl0aWMgc2hvY2sgbmFyb293IGluIDIwMjANCmlyb19hbmFwaE5fMjAyMCA8LSBJUl85NV9DSShUTkVfYW5hcGhOXzIwMjAsIFRQWV8yMDIwLCBucm93KGRmXzIwMjApKQ0KDQoNCiMgQW1vdW50IG9mIGV2ZW50cyBvZiBHQlMgaW4gMjAyMCANClRORV9nYnNfMjAyMCA8LSBldmVudHNfMjAyMCAlPiUgDQogIGZpbHRlcihEaWFnbm9zaXMgPT0gJ2dic19uYXJyb3cnKSAlPiUgbnJvdygpDQoNCiNJUiBmb3IgZ2JzIGluIDEwMDAgUFkNCmlyb19nYnNfMjAyMCA8LSBJUl85NV9DSShUTkVfZ2JzXzIwMjAsIFRQWV8yMDIwLCBucm93KGRmXzIwMjApKQ0KYGBgDQoNCg0KYGBge3J9DQpEaWFnbm9zaXMgPC0gYygnYW5hcGh5bGF4aXNfbmFycm93JywgJ2FuYXBoeWxheGlzX25hcnJvdycsICdhbmFwaHlsYXhpc19uYXJyb3cnLCAnYW5hcGh5bGF4aXNfbmFycm93JywnYW5hcGh5bGF4aXNfbmFycm93JywgJ2FuYXBoeWxheGlzX3Bvc3NpYmxlJywgJ2FuYXBoeWxheGlzX3Bvc3NpYmxlJywgJ2FuYXBoeWxheGlzX3Bvc3NpYmxlJywgJ2FuYXBoeWxheGlzX3Bvc3NpYmxlJywgJ2FuYXBoeWxheGlzX3Bvc3NpYmxlJywgJ2dic19uYXJyb3cnLCAnZ2JzX25hcnJvdycsICdnYnNfbmFycm93JywgJ2dic19uYXJyb3cnLCAnZ2JzX25hcnJvdycpDQpZZWFycyA8LSBjKCdUb3RhbCcsICcyMDE3JywgJzIwMTgnLCAnMjAxOScsICcyMDIwJywNCiAgICAgICAgICAgJ1RvdGFsJywgJzIwMTcnLCAnMjAxOCcsICcyMDE5JywgJzIwMjAnLA0KICAgICAgICAgICAnVG90YWwnLCAnMjAxNycsICcyMDE4JywgJzIwMTknLCAnMjAyMCcpDQoNCklSIDwtIGMoaXJvX2FuYXBoTiwgaXJvX2FuYXBoTl8yMDE3LCBpcm9fYW5hcGhOXzIwMTgsIGlyb19hbmFwaE5fMjAxOSwgaXJvX2FuYXBoTl8yMDIwLCBpcm9fYW5hcGhQLA0KICAgICAgICBpcm9fYW5hcGhQXzIwMTcsIGlyb19hbmFwaFBfMjAxOCwgaXJvX2FuYXBoUF8yMDE5LCBpcm9fYW5hcGhQXzIwMjAsIGlyb19nYnMsIGlyb19nYnNfMjAxNywgaXJvX2dic18yMDE4LCBpcm9fZ2JzXzIwMTksIGlyb19nYnNfMjAyMCkNCg0KDQp0YWIgPC0gZGF0YS5mcmFtZShEaWFnbm9zaXMgPSBEaWFnbm9zaXMsIFllYXIgPSBZZWFycywgJ0lSIHBlciAxMDAwIHB5JyA9IElSKQ0KYGBgDQoNCg0KYGBge3J9DQoNCm1ha2VfeWVhcl9hZ2VfYmFuZHMgPC0gZnVuY3Rpb24oZGF0YSwgYWdlX2dyb3VwKSB7DQogIG5ld19kYXRhIDwtIGRhdGEgJT4lIA0KICAgIGZpbHRlcihhZ2VfYmFuZHM9PWFnZV9ncm91cCkgDQogIHJldHVybihuZXdfZGF0YSkNCiAgfQ0KDQoNCmRmdG90YWwwMDE5IDwtIG1ha2VfeWVhcl9hZ2VfYmFuZHMoZGZ0b3RhbCwgJ1swLDE5XScpDQpkZnRvdGFsMjAzOSA8LSBtYWtlX3llYXJfYWdlX2JhbmRzKGRmdG90YWwsICdbMjAsMzldJykNCmRmdG90YWw0MDU5IDwtIG1ha2VfeWVhcl9hZ2VfYmFuZHMoZGZ0b3RhbCwgJ1s0MCw1OV0nKQ0KZGZ0b3RhbDYwNzkgPC0gbWFrZV95ZWFyX2FnZV9iYW5kcyhkZnRvdGFsLCAnWzYwLDc5XScpDQpkZnRvdGFsODAgPC0gbWFrZV95ZWFyX2FnZV9iYW5kcyhkZnRvdGFsLCAnWzgwK10nKQ0KDQpgYGANCg0KDQpgYGB7cn0NCiMgTWFrZSBmdW5jdGlvbiB0byBjYWxjdWxhdGUgYW1vdW50IG9mIGV2ZW50cw0KYW1vdW50X2V2ZW50cyA8LSBmdW5jdGlvbihkYXRhLCBkaWFnbikgew0KICBldmVudHMgPC0gZGF0YSAlPiUgDQogICAgZmlsdGVyKERpYWdub3NpcyA9PSBkaWFnbikgJT4lICBucm93KCkNCiAgcmV0dXJuKGV2ZW50cykNCn0NCmBgYA0KDQoNCmBgYHtyfQ0KI3RvdGFsIHBlcnNvbnllYXJzIGluIHN0dWR5IGZvciBhZ2ViYW5kIDAtMTkNClRQWTAwMTkgPC0gc3VtKGRmdG90YWwwMDE5JHllYXJzX2luX3N0dWR5KQ0KIyBhbW91bnQgb2YgZXZlbnRzIGZvciBlYWNoIGV2ZW50IGZvciBhZ2VfYmFuZCAwLTE5DQpUTkVfYW5hcGhQMDAxOSA8LSBhbW91bnRfZXZlbnRzKGRmdG90YWwwMDE5LCAnYW5hcGh5bF9wb3NzaWJsZScpDQpUTkVfYW5hcGhOMDAxOSA8LSBhbW91bnRfZXZlbnRzKGRmdG90YWwwMDE5LCAnYW5hcGh5bF9uYXJyb3cnKQ0KVE5FX2diczAwMTkgPC0gYW1vdW50X2V2ZW50cyhkZnRvdGFsMDAxOSwgJ2dic19uYXJyb3cnKQ0KDQojSVIgZm9yIGVhY2ggZXZlbnQgaW4gMTAwMFBZIGZvciBhZ2VfYmFuZCAwLTE5IA0KaXJvX2FuYXBoUDAwMTkgPC0gSVJfOTVfQ0koVE5FX2FuYXBoUDAwMTksIFRQWTAwMTksIG5yb3coZGZ0b3RhbDAwMTkpKQ0KaXJvX2FuYXBoTjAwMTkgPC0gSVJfOTVfQ0koVE5FX2FuYXBoTjAwMTksIFRQWTAwMTksIG5yb3coZGZ0b3RhbDAwMTkpKQ0KaXJvX2diczAwMTkgPC0gSVJfOTVfQ0koVE5FX2diczAwMTksIFRQWTAwMTksIG5yb3coZGZ0b3RhbDAwMTkpKQ0KYGBgDQoNCmBgYHtyfQ0KI3RvdGFsIHBlcnNvbnllYXJzIGluIHN0dWR5IGZvciBhZ2ViYW5kIDIwLTM5DQpUUFkyMDM5IDwtIHN1bShkZnRvdGFsMjAzOSR5ZWFyc19pbl9zdHVkeSkNCiMgYW1vdW50IG9mIGV2ZW50cyBmb3IgZWFjaCBldmVudCBmb3IgYWdlX2JhbmQgMjAtMzkNClRORV9hbmFwaFAyMDM5IDwtIGFtb3VudF9ldmVudHMoZGZ0b3RhbDIwMzksICdhbmFwaHlsX3Bvc3NpYmxlJykNClRORV9hbmFwaE4yMDM5IDwtIGFtb3VudF9ldmVudHMoZGZ0b3RhbDIwMzksICdhbmFwaHlsX25hcnJvdycpDQpUTkVfZ2JzMjAzOSA8LSBhbW91bnRfZXZlbnRzKGRmdG90YWwyMDM5LCAnZ2JzX25hcnJvdycpDQoNCiNJUiBmb3IgZWFjaCBldmVudCBpbiAxMDAwUFkgZm9yIGFnZV9iYW5kIDIwLTM5IA0KaXJvX2FuYXBoUDIwMzkgPC0gSVJfOTVfQ0koVE5FX2FuYXBoUDIwMzksIFRQWTIwMzksIG5yb3coZGZ0b3RhbDIwMzkpKQ0KaXJvX2FuYXBoTjIwMzkgPC0gSVJfOTVfQ0koVE5FX2FuYXBoTjIwMzksIFRQWTIwMzksIG5yb3coZGZ0b3RhbDIwMzkpKQ0KaXJvX2diczIwMzkgPC0gSVJfOTVfQ0koVE5FX2diczIwMzksIFRQWTIwMzksIG5yb3coZGZ0b3RhbDIwMzkpKQ0KYGBgDQoNCmBgYHtyfQ0KI3RvdGFsIHBlcnNvbnllYXJzIGluIHN0dWR5IGZvciBhZ2ViYW5kIDAtMTkNClRQWTQwNTkgPC0gc3VtKGRmdG90YWw0MDU5JHllYXJzX2luX3N0dWR5KQ0KIyBhbW91bnQgb2YgZXZlbnRzIGZvciBlYWNoIGV2ZW50IGZvciBhZ2VfYmFuZCAwLTE5DQpUTkVfYW5hcGhQNDA1OSA8LSBhbW91bnRfZXZlbnRzKGRmdG90YWw0MDU5LCAnYW5hcGh5bF9wb3NzaWJsZScpDQpUTkVfYW5hcGhONDA1OSA8LSBhbW91bnRfZXZlbnRzKGRmdG90YWw0MDU5LCAnYW5hcGh5bF9uYXJyb3cnKQ0KVE5FX2diczQwNTkgPC0gYW1vdW50X2V2ZW50cyhkZnRvdGFsNDA1OSwgJ2dic19uYXJyb3cnKQ0KDQojSVIgZm9yIGVhY2ggZXZlbnQgaW4gMTAwMFBZIGZvciBhZ2VfYmFuZCAwLTE5IA0KaXJvX2FuYXBoUDQwNTkgPC0gSVJfOTVfQ0koVE5FX2FuYXBoUDQwNTksIFRQWTQwNTksIG5yb3coZGZ0b3RhbDQwNTkpKQ0KaXJvX2FuYXBoTjQwNTkgPC0gSVJfOTVfQ0koVE5FX2FuYXBoTjQwNTksIFRQWTQwNTksIG5yb3coZGZ0b3RhbDQwNTkpKQ0KaXJvX2diczQwNTkgPC0gSVJfOTVfQ0koVE5FX2diczQwNTksIFRQWTQwNTksIG5yb3coZGZ0b3RhbDQwNTkpKQ0KYGBgDQoNCmBgYHtyfQ0KI3RvdGFsIHBlcnNvbnllYXJzIGluIHN0dWR5IGZvciBhZ2ViYW5kIDAtMTkNClRQWTYwNzkgPC0gc3VtKGRmdG90YWw2MDc5JHllYXJzX2luX3N0dWR5KQ0KIyBhbW91bnQgb2YgZXZlbnRzIGZvciBlYWNoIGV2ZW50IGZvciBhZ2VfYmFuZCAwLTE5DQpUTkVfYW5hcGhQNjA3OSA8LSBhbW91bnRfZXZlbnRzKGRmdG90YWw2MDc5LCAnYW5hcGh5bF9wb3NzaWJsZScpDQpUTkVfYW5hcGhONjA3OSA8LSBhbW91bnRfZXZlbnRzKGRmdG90YWw2MDc5LCAnYW5hcGh5bF9uYXJyb3cnKQ0KVE5FX2diczYwNzkgPC0gYW1vdW50X2V2ZW50cyhkZnRvdGFsNjA3OSwgJ2dic19uYXJyb3cnKQ0KDQojSVIgZm9yIGVhY2ggZXZlbnQgaW4gMTAwMFBZIGZvciBhZ2VfYmFuZCAwLTE5IA0KaXJvX2FuYXBoUDYwNzkgPC0gSVJfOTVfQ0koVE5FX2FuYXBoUDYwNzksIFRQWTYwNzksIG5yb3coZGZ0b3RhbDYwNzkpKQ0KaXJvX2FuYXBoTjYwNzkgPC0gSVJfOTVfQ0koVE5FX2FuYXBoTjYwNzksIFRQWTYwNzksIG5yb3coZGZ0b3RhbDYwNzkpKQ0KaXJvX2diczYwNzkgPC0gSVJfOTVfQ0koVE5FX2diczYwNzksIFRQWTYwNzksIG5yb3coZGZ0b3RhbDYwNzkpKQ0KYGBgDQoNCg0KDQpgYGB7cn0NCiNFdmVudHMgaW4gMjAxNyBmb3IgYWdlIGdyb3VwIDAwLTE5DQpldmVudHNfMjAxN18wMDE5IDwtIHN1YnNldChkZnRvdGFsMDAxOSwgeWVhcihlbmRfaW5jaWRlbmNlKSA9PSAyMDE3KSANCiN0aGUgVG90YWwgcGVyc29ueWVhcnMgZm9yIGFuIGV2ZW50IGluIDIwMTcgYWdlX2JhbmQwMDE5DQpUUFlfMjAxN18wMDE5IDwtIHN1bShkZnRvdGFsMDAxOSR5ZWFyc19pbl9zdHVkeV8yMDE3KQ0KDQojIENvdW50IHRoZW51bWJlciBvZiBldmVudHMgZm9yIGFnZV9iYW5kIDAwMTkgaW4gMjAxNw0KVE5FX2FuYXBoUF8wMDE5XzIwMTcgPC0gYW1vdW50X2V2ZW50cyhldmVudHNfMjAxN18wMDE5LCAnYW5hcGh5bF9wb3NzaWJsZScpDQpUTkVfYW5hcGhOXzAwMTlfMjAxNyA8LSBhbW91bnRfZXZlbnRzKGV2ZW50c18yMDE3XzAwMTksICdhbmFwaHlsX25hcnJvdycpDQpUTkVfZ2JzXzAwMTlfMjAxNyA8LSBhbW91bnRfZXZlbnRzKGV2ZW50c18yMDE3XzAwMTksICdnYnNfbmFycm93JykNCg0KI0lSIGZvciBlYWNoIGV2ZW50IGluIDEwMDBQWSBmb3IgYWdlX2JhbmQgMC0xOSANCmlyb19hbmFwaFBfMDAxOV8yMDE3IDwtIElSXzk1X0NJKFRORV9hbmFwaFBfMDAxOV8yMDE3LCBUUFlfMjAxN18wMDE5LCBucm93KGRmdG90YWwwMDE5KSkNCmlyb19hbmFwaE5fMDAxOV8yMDE3IDwtIElSXzk1X0NJKFRORV9hbmFwaE5fMDAxOV8yMDE3LCBUUFlfMjAxN18wMDE5LCBucm93KGRmdG90YWwwMDE5KSkNCmlyb19nYnNfMDAxOV8yMDE3IDwtIElSXzk1X0NJKFRORV9nYnNfMDAxOV8yMDE3LCBUUFlfMjAxN18wMDE5LCBucm93KGRmdG90YWwwMDE5KSkNCmBgYA0KDQpgYGB7cn0NCiNFdmVudHMgaW4gMjAxNyBmb3IgYWdlIGdyb3VwIDAwLTE5DQpldmVudHNfMjAxN18yMDM5IDwtIHN1YnNldChkZnRvdGFsMjAzOSwgeWVhcihlbmRfaW5jaWRlbmNlKSA9PSAyMDE3KSANCiN0aGUgVG90YWwgcGVyc29ueWVhcnMgZm9yIGFuIGV2ZW50IGluIDIwMTcgYWdlX2JhbmQyMDM5DQpUUFlfMjAxN18yMDM5IDwtIHN1bShkZnRvdGFsMjAzOSR5ZWFyc19pbl9zdHVkeV8yMDE3KQ0KDQojIENvdW50IHRoZW51bWJlciBvZiBldmVudHMgZm9yIGFnZV9iYW5kIDIwMzkgaW4gMjAxNw0KVE5FX2FuYXBoUF8yMDM5XzIwMTcgPC0gYW1vdW50X2V2ZW50cyhldmVudHNfMjAxN18yMDM5LCAnYW5hcGh5bF9wb3NzaWJsZScpDQpUTkVfYW5hcGhOXzIwMzlfMjAxNyA8LSBhbW91bnRfZXZlbnRzKGV2ZW50c18yMDE3XzIwMzksICdhbmFwaHlsX25hcnJvdycpDQpUTkVfZ2JzXzIwMzlfMjAxNyA8LSBhbW91bnRfZXZlbnRzKGV2ZW50c18yMDE3XzIwMzksICdnYnNfbmFycm93JykNCg0KI0lSIGZvciBlYWNoIGV2ZW50IGluIDEwMDBQWSBmb3IgYWdlX2JhbmQgMC0xOSANCmlyb19hbmFwaFBfMjAzOV8yMDE3IDwtIElSXzk1X0NJKFRORV9hbmFwaFBfMjAzOV8yMDE3LCBUUFlfMjAxN18yMDM5LCBucm93KGRmdG90YWwyMDM5KSkNCmlyb19hbmFwaE5fMjAzOV8yMDE3IDwtIElSXzk1X0NJKFRORV9hbmFwaE5fMjAzOV8yMDE3LCBUUFlfMjAxN18yMDM5LCBucm93KGRmdG90YWwyMDM5KSkNCmlyb19nYnNfMjAzOV8yMDE3IDwtIElSXzk1X0NJKFRORV9nYnNfMjAzOV8yMDE3LCBUUFlfMjAxN18yMDM5LCBucm93KGRmdG90YWwyMDM5KSkNCmBgYA0KDQpgYGB7cn0NCiNFdmVudHMgaW4gMjAxNyBmb3IgYWdlIGdyb3VwIDAwLTE5DQpldmVudHNfMjAxN180MDU5IDwtIHN1YnNldChkZnRvdGFsNDA1OSwgeWVhcihlbmRfaW5jaWRlbmNlKSA9PSAyMDE3KSANCiN0aGUgVG90YWwgcGVyc29ueWVhcnMgZm9yIGFuIGV2ZW50IGluIDIwMTcgYWdlX2JhbmQ0MDU5DQpUUFlfMjAxN180MDU5IDwtIHN1bShkZnRvdGFsNDA1OSR5ZWFyc19pbl9zdHVkeV8yMDE3KQ0KDQojIENvdW50IHRoZW51bWJlciBvZiBldmVudHMgZm9yIGFnZV9iYW5kIDQwNTkgaW4gMjAxNw0KVE5FX2FuYXBoUF80MDU5XzIwMTcgPC0gYW1vdW50X2V2ZW50cyhldmVudHNfMjAxN180MDU5LCAnYW5hcGh5bF9wb3NzaWJsZScpDQpUTkVfYW5hcGhOXzQwNTlfMjAxNyA8LSBhbW91bnRfZXZlbnRzKGV2ZW50c18yMDE3XzQwNTksICdhbmFwaHlsX25hcnJvdycpDQpUTkVfZ2JzXzQwNTlfMjAxNyA8LSBhbW91bnRfZXZlbnRzKGV2ZW50c18yMDE3XzQwNTksICdnYnNfbmFycm93JykNCg0KI0lSIGZvciBlYWNoIGV2ZW50IGluIDEwMDBQWSBmb3IgYWdlX2JhbmQgMC0xOSANCmlyb19hbmFwaFBfNDA1OV8yMDE3IDwtIElSXzk1X0NJKFRORV9hbmFwaFBfNDA1OV8yMDE3LCBUUFlfMjAxN180MDU5LCBucm93KGRmdG90YWw0MDU5KSkNCmlyb19hbmFwaE5fNDA1OV8yMDE3IDwtIElSXzk1X0NJKFRORV9hbmFwaE5fNDA1OV8yMDE3LCBUUFlfMjAxN180MDU5LCBucm93KGRmdG90YWw0MDU5KSkNCmlyb19nYnNfNDA1OV8yMDE3IDwtIElSXzk1X0NJKFRORV9nYnNfNDA1OV8yMDE3LCBUUFlfMjAxN180MDU5LCBucm93KGRmdG90YWw0MDU5KSkNCmBgYA0KDQpgYGB7cn0NCiNFdmVudHMgaW4gMjAxNyBmb3IgYWdlIGdyb3VwIDAwLTE5DQpldmVudHNfMjAxN182MDc5IDwtIHN1YnNldChkZnRvdGFsNjA3OSwgeWVhcihlbmRfaW5jaWRlbmNlKSA9PSAyMDE3KSANCiN0aGUgVG90YWwgcGVyc29ueWVhcnMgZm9yIGFuIGV2ZW50IGluIDIwMTcgYWdlX2JhbmQ2MDc5DQpUUFlfMjAxN182MDc5IDwtIHN1bShkZnRvdGFsNjA3OSR5ZWFyc19pbl9zdHVkeV8yMDE3KQ0KDQojIENvdW50IHRoZW51bWJlciBvZiBldmVudHMgZm9yIGFnZV9iYW5kIDYwNzkgaW4gMjAxNw0KVE5FX2FuYXBoUF82MDc5XzIwMTcgPC0gYW1vdW50X2V2ZW50cyhldmVudHNfMjAxN182MDc5LCAnYW5hcGh5bF9wb3NzaWJsZScpDQpUTkVfYW5hcGhOXzYwNzlfMjAxNyA8LSBhbW91bnRfZXZlbnRzKGV2ZW50c18yMDE3XzYwNzksICdhbmFwaHlsX25hcnJvdycpDQpUTkVfZ2JzXzYwNzlfMjAxNyA8LSBhbW91bnRfZXZlbnRzKGV2ZW50c18yMDE3XzYwNzksICdnYnNfbmFycm93JykNCg0KI0lSIGZvciBlYWNoIGV2ZW50IGluIDEwMDBQWSBmb3IgYWdlX2JhbmQgMC0xOSANCmlyb19hbmFwaFBfNjA3OV8yMDE3IDwtIElSXzk1X0NJKFRORV9hbmFwaFBfNjA3OV8yMDE3LCBUUFlfMjAxN182MDc5LCBucm93KGRmdG90YWw2MDc5KSkNCmlyb19hbmFwaE5fNjA3OV8yMDE3IDwtIElSXzk1X0NJKFRORV9hbmFwaE5fNjA3OV8yMDE3LCBUUFlfMjAxN182MDc5LCBucm93KGRmdG90YWw2MDc5KSkNCmlyb19nYnNfNjA3OV8yMDE3IDwtIElSXzk1X0NJKFRORV9nYnNfNjA3OV8yMDE3LCBUUFlfMjAxN182MDc5LCBucm93KGRmdG90YWw2MDc5KSkNCmBgYA0KDQoNCg0KYGBge3J9DQpkZl8yMDE4XzAwMTkgPC0gbWFrZV95ZWFyX2FnZV9iYW5kcyhkZl8yMDE4LCAnWzAsMTldJykNCmRmXzIwMThfMjAzOSA8LSBtYWtlX3llYXJfYWdlX2JhbmRzKGRmXzIwMTgsICdbMjAsMzldJykNCmRmXzIwMThfNDA1OSA8LSBtYWtlX3llYXJfYWdlX2JhbmRzKGRmXzIwMTgsICdbNDAsNTldJykNCmRmXzIwMThfNjA3OSA8LSBtYWtlX3llYXJfYWdlX2JhbmRzKGRmXzIwMTgsICdbNjAsNzldJykNCmBgYA0KDQoNCmBgYHtyfQ0KI0V2ZW50cyBpbiAyMDE3IGZvciBhZ2UgZ3JvdXAgMDAtMTkNCmV2ZW50c18yMDE4XzAwMTkgPC0gc3Vic2V0KGRmXzIwMThfMDAxOSwgeWVhcihlbmRfaW5jaWRlbmNlKSA9PSAyMDE4KSANCiN0aGUgXzIwMThfIHBlcnNvbnllYXJzIGZvciBhbiBldmVudCBpbiAyMDE4IGFnZV9iYW5kMDAxOQ0KVFBZXzIwMThfMDAxOSA8LSBzdW0oZGZfMjAxOF8wMDE5JHllYXJzX2luX3N0dWR5XzIwMTgpDQoNCiMgQ291bnQgdGhlbnVtYmVyIG9mIGV2ZW50cyBmb3IgYWdlX2JhbmQgMDAxOSBpbiAyMDE4DQpUTkVfYW5hcGhQXzAwMTlfMjAxOCA8LSBhbW91bnRfZXZlbnRzKGV2ZW50c18yMDE4XzAwMTksICdhbmFwaHlsX3Bvc3NpYmxlJykNClRORV9hbmFwaE5fMDAxOV8yMDE4IDwtIGFtb3VudF9ldmVudHMoZXZlbnRzXzIwMThfMDAxOSwgJ2FuYXBoeWxfbmFycm93JykNClRORV9nYnNfMDAxOV8yMDE4IDwtIGFtb3VudF9ldmVudHMoZXZlbnRzXzIwMThfMDAxOSwgJ2dic19uYXJyb3cnKQ0KDQojSVIgZm9yIGVhY2ggZXZlbnQgaW4gMTAwMFBZIGZvciBhZ2VfYmFuZCAwLTE5IA0KaXJvX2FuYXBoUF8wMDE5XzIwMTggPC0gSVJfOTVfQ0koVE5FX2FuYXBoUF8wMDE5XzIwMTgsIFRQWV8yMDE4XzAwMTksIG5yb3coZGZfMjAxOF8wMDE5KSkNCmlyb19hbmFwaE5fMDAxOV8yMDE4IDwtIElSXzk1X0NJKFRORV9hbmFwaE5fMDAxOV8yMDE4LCBUUFlfMjAxOF8wMDE5LCBucm93KGRmXzIwMThfMDAxOSkpDQppcm9fZ2JzXzAwMTlfMjAxOCA8LSBJUl85NV9DSShUTkVfZ2JzXzAwMTlfMjAxOCwgVFBZXzIwMThfMDAxOSwgbnJvdyhkZl8yMDE4XzAwMTkpKQ0KYGBgDQoNCmBgYHtyfQ0KI0V2ZW50cyBpbiAyMDE4IGZvciBhZ2UgZ3JvdXAgMDAtMTkNCmV2ZW50c18yMDE4XzIwMzkgPC0gc3Vic2V0KGRmXzIwMThfMjAzOSwgeWVhcihlbmRfaW5jaWRlbmNlKSA9PSAyMDE4KSANCiN0aGUgXzIwMThfIHBlcnNvbnllYXJzIGZvciBhbiBldmVudCBpbiAyMDE4IGFnZV9iYW5kMjAzOQ0KVFBZXzIwMThfMjAzOSA8LSBzdW0oZGZfMjAxOF8yMDM5JHllYXJzX2luX3N0dWR5XzIwMTgpDQoNCiMgQ291bnQgdGhlbnVtYmVyIG9mIGV2ZW50cyBmb3IgYWdlX2JhbmQgMjAzOSBpbiAyMDE4DQpUTkVfYW5hcGhQXzIwMzlfMjAxOCA8LSBhbW91bnRfZXZlbnRzKGV2ZW50c18yMDE4XzIwMzksICdhbmFwaHlsX3Bvc3NpYmxlJykNClRORV9hbmFwaE5fMjAzOV8yMDE4IDwtIGFtb3VudF9ldmVudHMoZXZlbnRzXzIwMThfMjAzOSwgJ2FuYXBoeWxfbmFycm93JykNClRORV9nYnNfMjAzOV8yMDE4IDwtIGFtb3VudF9ldmVudHMoZXZlbnRzXzIwMThfMjAzOSwgJ2dic19uYXJyb3cnKQ0KDQojSVIgZm9yIGVhY2ggZXZlbnQgaW4gMTAwMFBZIGZvciBhZ2VfYmFuZCAwLTE5IA0KaXJvX2FuYXBoUF8yMDM5XzIwMTggPC0gSVJfOTVfQ0koVE5FX2FuYXBoUF8yMDM5XzIwMTgsIFRQWV8yMDE4XzIwMzksIG5yb3coZGZfMjAxOF8yMDM5KSkNCmlyb19hbmFwaE5fMjAzOV8yMDE4IDwtIElSXzk1X0NJKFRORV9hbmFwaE5fMjAzOV8yMDE4LCBUUFlfMjAxOF8yMDM5LCBucm93KGRmXzIwMThfMjAzOSkpDQppcm9fZ2JzXzIwMzlfMjAxOCA8LSBJUl85NV9DSShUTkVfZ2JzXzIwMzlfMjAxOCwgVFBZXzIwMThfMjAzOSwgbnJvdyhkZl8yMDE4XzIwMzkpKQ0KYGBgDQoNCmBgYHtyfQ0KI0V2ZW50cyBpbiAyMDE4IGZvciBhZ2UgZ3JvdXAgMDAtMTkNCmV2ZW50c18yMDE4XzQwNTkgPC0gc3Vic2V0KGRmXzIwMThfNDA1OSwgeWVhcihlbmRfaW5jaWRlbmNlKSA9PSAyMDE4KSANCiN0aGUgXzIwMThfIHBlcnNvbnllYXJzIGZvciBhbiBldmVudCBpbiAyMDE4IGFnZV9iYW5kNDA1OQ0KVFBZXzIwMThfNDA1OSA8LSBzdW0oZGZfMjAxOF80MDU5JHllYXJzX2luX3N0dWR5XzIwMTgpDQoNCiMgQ291bnQgdGhlbnVtYmVyIG9mIGV2ZW50cyBmb3IgYWdlX2JhbmQgNDA1OSBpbiAyMDE4DQpUTkVfYW5hcGhQXzQwNTlfMjAxOCA8LSBhbW91bnRfZXZlbnRzKGV2ZW50c18yMDE4XzQwNTksICdhbmFwaHlsX3Bvc3NpYmxlJykNClRORV9hbmFwaE5fNDA1OV8yMDE4IDwtIGFtb3VudF9ldmVudHMoZXZlbnRzXzIwMThfNDA1OSwgJ2FuYXBoeWxfbmFycm93JykNClRORV9nYnNfNDA1OV8yMDE4IDwtIGFtb3VudF9ldmVudHMoZXZlbnRzXzIwMThfNDA1OSwgJ2dic19uYXJyb3cnKQ0KDQojSVIgZm9yIGVhY2ggZXZlbnQgaW4gMTAwMFBZIGZvciBhZ2VfYmFuZCAwLTE5IA0KaXJvX2FuYXBoUF80MDU5XzIwMTggPC0gSVJfOTVfQ0koVE5FX2FuYXBoUF80MDU5XzIwMTgsIFRQWV8yMDE4XzQwNTksIG5yb3coZGZfMjAxOF80MDU5KSkNCmlyb19hbmFwaE5fNDA1OV8yMDE4IDwtIElSXzk1X0NJKFRORV9hbmFwaE5fNDA1OV8yMDE4LCBUUFlfMjAxOF80MDU5LCBucm93KGRmXzIwMThfNDA1OSkpDQppcm9fZ2JzXzQwNTlfMjAxOCA8LSBJUl85NV9DSShUTkVfZ2JzXzQwNTlfMjAxOCwgVFBZXzIwMThfNDA1OSwgbnJvdyhkZl8yMDE4XzQwNTkpKQ0KYGBgDQoNCmBgYHtyfQ0KI0V2ZW50cyBpbiAyMDE4IGZvciBhZ2UgZ3JvdXAgMDAtMTkNCmV2ZW50c18yMDE4XzYwNzkgPC0gc3Vic2V0KGRmXzIwMThfNjA3OSwgeWVhcihlbmRfaW5jaWRlbmNlKSA9PSAyMDE4KSANCiN0aGUgXzIwMThfIHBlcnNvbnllYXJzIGZvciBhbiBldmVudCBpbiAyMDE4IGFnZV9iYW5kNjA3OQ0KVFBZXzIwMThfNjA3OSA8LSBzdW0oZGZfMjAxOF82MDc5JHllYXJzX2luX3N0dWR5XzIwMTgpDQoNCiMgQ291bnQgdGhlbnVtYmVyIG9mIGV2ZW50cyBmb3IgYWdlX2JhbmQgNjA3OSBpbiAyMDE4DQpUTkVfYW5hcGhQXzYwNzlfMjAxOCA8LSBhbW91bnRfZXZlbnRzKGV2ZW50c18yMDE4XzYwNzksICdhbmFwaHlsX3Bvc3NpYmxlJykNClRORV9hbmFwaE5fNjA3OV8yMDE4IDwtIGFtb3VudF9ldmVudHMoZXZlbnRzXzIwMThfNjA3OSwgJ2FuYXBoeWxfbmFycm93JykNClRORV9nYnNfNjA3OV8yMDE4IDwtIGFtb3VudF9ldmVudHMoZXZlbnRzXzIwMThfNjA3OSwgJ2dic19uYXJyb3cnKQ0KDQojSVIgZm9yIGVhY2ggZXZlbnQgaW4gMTAwMFBZIGZvciBhZ2VfYmFuZCAwLTE5IA0KaXJvX2FuYXBoUF82MDc5XzIwMTggPC0gSVJfOTVfQ0koVE5FX2FuYXBoUF82MDc5XzIwMTgsIFRQWV8yMDE4XzYwNzksIG5yb3coZGZfMjAxOF82MDc5KSkNCmlyb19hbmFwaE5fNjA3OV8yMDE4IDwtIElSXzk1X0NJKFRORV9hbmFwaE5fNjA3OV8yMDE4LCBUUFlfMjAxOF82MDc5LCBucm93KGRmXzIwMThfNjA3OSkpDQppcm9fZ2JzXzYwNzlfMjAxOCA8LSBJUl85NV9DSShUTkVfZ2JzXzYwNzlfMjAxOCwgVFBZXzIwMThfNjA3OSwgbnJvdyhkZl8yMDE4XzYwNzkpKQ0KYGBgDQoNCg0KDQpgYGB7cn0NCmRmXzIwMTlfMDAxOSA8LSBtYWtlX3llYXJfYWdlX2JhbmRzKGRmXzIwMTksICdbMCwxOV0nKQ0KZGZfMjAxOV8yMDM5IDwtIG1ha2VfeWVhcl9hZ2VfYmFuZHMoZGZfMjAxOSwgJ1syMCwzOV0nKQ0KZGZfMjAxOV80MDU5IDwtIG1ha2VfeWVhcl9hZ2VfYmFuZHMoZGZfMjAxOSwgJ1s0MCw1OV0nKQ0KZGZfMjAxOV82MDc5IDwtIG1ha2VfeWVhcl9hZ2VfYmFuZHMoZGZfMjAxOSwgJ1s2MCw3OV0nKQ0KYGBgDQoNCg0KYGBge3J9DQojRXZlbnRzIGluIDIwMTcgZm9yIGFnZSBncm91cCAwMC0xOQ0KZXZlbnRzXzIwMTlfMDAxOSA8LSBzdWJzZXQoZGZfMjAxOV8wMDE5LCB5ZWFyKGVuZF9pbmNpZGVuY2UpID09IDIwMTkpIA0KI3RoZSBfMjAxOV8gcGVyc29ueWVhcnMgZm9yIGFuIGV2ZW50IGluIDIwMTkgYWdlX2JhbmQwMDE5DQpUUFlfMjAxOV8wMDE5IDwtIHN1bShkZl8yMDE5XzAwMTkkeWVhcnNfaW5fc3R1ZHlfMjAxOSkNCg0KIyBDb3VudCB0aGVudW1iZXIgb2YgZXZlbnRzIGZvciBhZ2VfYmFuZCAwMDE5IGluIDIwMTkNClRORV9hbmFwaFBfMDAxOV8yMDE5IDwtIGFtb3VudF9ldmVudHMoZXZlbnRzXzIwMTlfMDAxOSwgJ2FuYXBoeWxfcG9zc2libGUnKQ0KVE5FX2FuYXBoTl8wMDE5XzIwMTkgPC0gYW1vdW50X2V2ZW50cyhldmVudHNfMjAxOV8wMDE5LCAnYW5hcGh5bF9uYXJyb3cnKQ0KVE5FX2dic18wMDE5XzIwMTkgPC0gYW1vdW50X2V2ZW50cyhldmVudHNfMjAxOV8wMDE5LCAnZ2JzX25hcnJvdycpDQoNCiNJUiBmb3IgZWFjaCBldmVudCBpbiAxMDAwUFkgZm9yIGFnZV9iYW5kIDAtMTkgDQppcm9fYW5hcGhQXzAwMTlfMjAxOSA8LSBJUl85NV9DSShUTkVfYW5hcGhQXzAwMTlfMjAxOSwgVFBZXzIwMTlfMDAxOSwgbnJvdyhkZl8yMDE5XzAwMTkpKQ0KaXJvX2FuYXBoTl8wMDE5XzIwMTkgPC0gSVJfOTVfQ0koVE5FX2FuYXBoTl8wMDE5XzIwMTksIFRQWV8yMDE5XzAwMTksIG5yb3coZGZfMjAxOV8wMDE5KSkNCmlyb19nYnNfMDAxOV8yMDE5IDwtIElSXzk1X0NJKFRORV9nYnNfMDAxOV8yMDE5LCBUUFlfMjAxOV8wMDE5LCBucm93KGRmXzIwMTlfMDAxOSkpDQpgYGANCg0KYGBge3J9DQojRXZlbnRzIGluIDIwMTkgZm9yIGFnZSBncm91cCAwMC0xOQ0KZXZlbnRzXzIwMTlfMjAzOSA8LSBzdWJzZXQoZGZfMjAxOV8yMDM5LCB5ZWFyKGVuZF9pbmNpZGVuY2UpID09IDIwMTkpIA0KI3RoZSBfMjAxOV8gcGVyc29ueWVhcnMgZm9yIGFuIGV2ZW50IGluIDIwMTkgYWdlX2JhbmQyMDM5DQpUUFlfMjAxOV8yMDM5IDwtIHN1bShkZl8yMDE5XzIwMzkkeWVhcnNfaW5fc3R1ZHlfMjAxOSkNCg0KIyBDb3VudCB0aGVudW1iZXIgb2YgZXZlbnRzIGZvciBhZ2VfYmFuZCAyMDM5IGluIDIwMTkNClRORV9hbmFwaFBfMjAzOV8yMDE5IDwtIGFtb3VudF9ldmVudHMoZXZlbnRzXzIwMTlfMjAzOSwgJ2FuYXBoeWxfcG9zc2libGUnKQ0KVE5FX2FuYXBoTl8yMDM5XzIwMTkgPC0gYW1vdW50X2V2ZW50cyhldmVudHNfMjAxOV8yMDM5LCAnYW5hcGh5bF9uYXJyb3cnKQ0KVE5FX2dic18yMDM5XzIwMTkgPC0gYW1vdW50X2V2ZW50cyhldmVudHNfMjAxOV8yMDM5LCAnZ2JzX25hcnJvdycpDQoNCiNJUiBmb3IgZWFjaCBldmVudCBpbiAxMDAwUFkgZm9yIGFnZV9iYW5kIDAtMTkgDQppcm9fYW5hcGhQXzIwMzlfMjAxOSA8LSBJUl85NV9DSShUTkVfYW5hcGhQXzIwMzlfMjAxOSwgVFBZXzIwMTlfMjAzOSwgbnJvdyhkZl8yMDE5XzIwMzkpKQ0KaXJvX2FuYXBoTl8yMDM5XzIwMTkgPC0gSVJfOTVfQ0koVE5FX2FuYXBoTl8yMDM5XzIwMTksIFRQWV8yMDE5XzIwMzksIG5yb3coZGZfMjAxOV8yMDM5KSkNCmlyb19nYnNfMjAzOV8yMDE5IDwtIElSXzk1X0NJKFRORV9nYnNfMjAzOV8yMDE5LCBUUFlfMjAxOV8yMDM5LCBucm93KGRmXzIwMTlfMjAzOSkpDQpgYGANCg0KYGBge3J9DQojRXZlbnRzIGluIDIwMTkgZm9yIGFnZSBncm91cCAwMC0xOQ0KZXZlbnRzXzIwMTlfNDA1OSA8LSBzdWJzZXQoZGZfMjAxOV80MDU5LCB5ZWFyKGVuZF9pbmNpZGVuY2UpID09IDIwMTkpIA0KI3RoZSBfMjAxOV8gcGVyc29ueWVhcnMgZm9yIGFuIGV2ZW50IGluIDIwMTkgYWdlX2JhbmQ0MDU5DQpUUFlfMjAxOV80MDU5IDwtIHN1bShkZl8yMDE5XzQwNTkkeWVhcnNfaW5fc3R1ZHlfMjAxOSkNCg0KIyBDb3VudCB0aGVudW1iZXIgb2YgZXZlbnRzIGZvciBhZ2VfYmFuZCA0MDU5IGluIDIwMTkNClRORV9hbmFwaFBfNDA1OV8yMDE5IDwtIGFtb3VudF9ldmVudHMoZXZlbnRzXzIwMTlfNDA1OSwgJ2FuYXBoeWxfcG9zc2libGUnKQ0KVE5FX2FuYXBoTl80MDU5XzIwMTkgPC0gYW1vdW50X2V2ZW50cyhldmVudHNfMjAxOV80MDU5LCAnYW5hcGh5bF9uYXJyb3cnKQ0KVE5FX2dic180MDU5XzIwMTkgPC0gYW1vdW50X2V2ZW50cyhldmVudHNfMjAxOV80MDU5LCAnZ2JzX25hcnJvdycpDQoNCiNJUiBmb3IgZWFjaCBldmVudCBpbiAxMDAwUFkgZm9yIGFnZV9iYW5kIDAtMTkgDQppcm9fYW5hcGhQXzQwNTlfMjAxOSA8LSBJUl85NV9DSShUTkVfYW5hcGhQXzQwNTlfMjAxOSwgVFBZXzIwMTlfNDA1OSwgbnJvdyhkZl8yMDE5XzQwNTkpKQ0KaXJvX2FuYXBoTl80MDU5XzIwMTkgPC0gSVJfOTVfQ0koVE5FX2FuYXBoTl80MDU5XzIwMTksIFRQWV8yMDE5XzQwNTksIG5yb3coZGZfMjAxOV80MDU5KSkNCmlyb19nYnNfNDA1OV8yMDE5IDwtIElSXzk1X0NJKFRORV9nYnNfNDA1OV8yMDE5LCBUUFlfMjAxOV80MDU5LCBucm93KGRmXzIwMTlfNDA1OSkpDQpgYGANCg0KYGBge3J9DQojRXZlbnRzIGluIDIwMTkgZm9yIGFnZSBncm91cCAwMC0xOQ0KZXZlbnRzXzIwMTlfNjA3OSA8LSBzdWJzZXQoZGZfMjAxOV82MDc5LCB5ZWFyKGVuZF9pbmNpZGVuY2UpID09IDIwMTkpIA0KI3RoZSBfMjAxOV8gcGVyc29ueWVhcnMgZm9yIGFuIGV2ZW50IGluIDIwMTkgYWdlX2JhbmQ2MDc5DQpUUFlfMjAxOV82MDc5IDwtIHN1bShkZl8yMDE5XzYwNzkkeWVhcnNfaW5fc3R1ZHlfMjAxOSkNCg0KIyBDb3VudCB0aGVudW1iZXIgb2YgZXZlbnRzIGZvciBhZ2VfYmFuZCA2MDc5IGluIDIwMTkNClRORV9hbmFwaFBfNjA3OV8yMDE5IDwtIGFtb3VudF9ldmVudHMoZXZlbnRzXzIwMTlfNjA3OSwgJ2FuYXBoeWxfcG9zc2libGUnKQ0KVE5FX2FuYXBoTl82MDc5XzIwMTkgPC0gYW1vdW50X2V2ZW50cyhldmVudHNfMjAxOV82MDc5LCAnYW5hcGh5bF9uYXJyb3cnKQ0KVE5FX2dic182MDc5XzIwMTkgPC0gYW1vdW50X2V2ZW50cyhldmVudHNfMjAxOV82MDc5LCAnZ2JzX25hcnJvdycpDQoNCiNJUiBmb3IgZWFjaCBldmVudCBpbiAxMDAwUFkgZm9yIGFnZV9iYW5kIDAtMTkgDQppcm9fYW5hcGhQXzYwNzlfMjAxOSA8LSBJUl85NV9DSShUTkVfYW5hcGhQXzYwNzlfMjAxOSwgVFBZXzIwMTlfNjA3OSwgbnJvdyhkZl8yMDE5XzYwNzkpKQ0KaXJvX2FuYXBoTl82MDc5XzIwMTkgPC0gSVJfOTVfQ0koVE5FX2FuYXBoTl82MDc5XzIwMTksIFRQWV8yMDE5XzYwNzksIG5yb3coZGZfMjAxOV82MDc5KSkNCmlyb19nYnNfNjA3OV8yMDE5IDwtIElSXzk1X0NJKFRORV9nYnNfNjA3OV8yMDE5LCBUUFlfMjAxOV82MDc5LCBucm93KGRmXzIwMTlfNjA3OSkpDQpgYGANCg0KDQoNCmBgYHtyfQ0KZGZfMjAyMF8wMDE5IDwtIG1ha2VfeWVhcl9hZ2VfYmFuZHMoZGZfMjAyMCwgJ1swLDE5XScpDQpkZl8yMDIwXzIwMzkgPC0gbWFrZV95ZWFyX2FnZV9iYW5kcyhkZl8yMDIwLCAnWzIwLDM5XScpDQpkZl8yMDIwXzQwNTkgPC0gbWFrZV95ZWFyX2FnZV9iYW5kcyhkZl8yMDIwLCAnWzQwLDU5XScpDQpkZl8yMDIwXzYwNzkgPC0gbWFrZV95ZWFyX2FnZV9iYW5kcyhkZl8yMDIwLCAnWzYwLDc5XScpDQpgYGANCg0KDQpgYGB7cn0NCiNFdmVudHMgaW4gMjAxNyBmb3IgYWdlIGdyb3VwIDAwLTE5DQpldmVudHNfMjAyMF8wMDE5IDwtIHN1YnNldChkZl8yMDIwXzAwMTksIHllYXIoZW5kX2luY2lkZW5jZSkgPT0gMjAyMCkgDQojdGhlIF8yMDIwXyBwZXJzb255ZWFycyBmb3IgYW4gZXZlbnQgaW4gMjAyMCBhZ2VfYmFuZDAwMTkNClRQWV8yMDIwXzAwMTkgPC0gc3VtKGRmXzIwMjBfMDAxOSR5ZWFyc19pbl9zdHVkeV8yMDIwKQ0KDQojIENvdW50IHRoZW51bWJlciBvZiBldmVudHMgZm9yIGFnZV9iYW5kIDAwMTkgaW4gMjAyMA0KVE5FX2FuYXBoUF8wMDE5XzIwMjAgPC0gYW1vdW50X2V2ZW50cyhldmVudHNfMjAyMF8wMDE5LCAnYW5hcGh5bF9wb3NzaWJsZScpDQpUTkVfYW5hcGhOXzAwMTlfMjAyMCA8LSBhbW91bnRfZXZlbnRzKGV2ZW50c18yMDIwXzAwMTksICdhbmFwaHlsX25hcnJvdycpDQpUTkVfZ2JzXzAwMTlfMjAyMCA8LSBhbW91bnRfZXZlbnRzKGV2ZW50c18yMDIwXzAwMTksICdnYnNfbmFycm93JykNCg0KI0lSIGZvciBlYWNoIGV2ZW50IGluIDEwMDBQWSBmb3IgYWdlX2JhbmQgMC0xOSANCmlyb19hbmFwaFBfMDAxOV8yMDIwIDwtIElSXzk1X0NJKFRORV9hbmFwaFBfMDAxOV8yMDIwLCBUUFlfMjAyMF8wMDE5LCBucm93KGRmXzIwMjBfMDAxOSkpDQppcm9fYW5hcGhOXzAwMTlfMjAyMCA8LSBJUl85NV9DSShUTkVfYW5hcGhOXzAwMTlfMjAyMCwgVFBZXzIwMjBfMDAxOSwgbnJvdyhkZl8yMDIwXzAwMTkpKQ0KaXJvX2dic18wMDE5XzIwMjAgPC0gSVJfOTVfQ0koVE5FX2dic18wMDE5XzIwMjAsIFRQWV8yMDIwXzAwMTksIG5yb3coZGZfMjAyMF8wMDE5KSkNCmBgYA0KDQpgYGB7cn0NCiNFdmVudHMgaW4gMjAyMCBmb3IgYWdlIGdyb3VwIDAwLTE5DQpldmVudHNfMjAyMF8yMDM5IDwtIHN1YnNldChkZl8yMDIwXzIwMzksIHllYXIoZW5kX2luY2lkZW5jZSkgPT0gMjAyMCkgDQojdGhlIF8yMDIwXyBwZXJzb255ZWFycyBmb3IgYW4gZXZlbnQgaW4gMjAyMCBhZ2VfYmFuZDIwMzkNClRQWV8yMDIwXzIwMzkgPC0gc3VtKGRmXzIwMjBfMjAzOSR5ZWFyc19pbl9zdHVkeV8yMDIwKQ0KDQojIENvdW50IHRoZW51bWJlciBvZiBldmVudHMgZm9yIGFnZV9iYW5kIDIwMzkgaW4gMjAyMA0KVE5FX2FuYXBoUF8yMDM5XzIwMjAgPC0gYW1vdW50X2V2ZW50cyhldmVudHNfMjAyMF8yMDM5LCAnYW5hcGh5bF9wb3NzaWJsZScpDQpUTkVfYW5hcGhOXzIwMzlfMjAyMCA8LSBhbW91bnRfZXZlbnRzKGV2ZW50c18yMDIwXzIwMzksICdhbmFwaHlsX25hcnJvdycpDQpUTkVfZ2JzXzIwMzlfMjAyMCA8LSBhbW91bnRfZXZlbnRzKGV2ZW50c18yMDIwXzIwMzksICdnYnNfbmFycm93JykNCg0KI0lSIGZvciBlYWNoIGV2ZW50IGluIDEwMDBQWSBmb3IgYWdlX2JhbmQgMC0xOSANCmlyb19hbmFwaFBfMjAzOV8yMDIwIDwtIElSXzk1X0NJKFRORV9hbmFwaFBfMjAzOV8yMDIwLCBUUFlfMjAyMF8yMDM5LCBucm93KGRmXzIwMjBfMjAzOSkpDQppcm9fYW5hcGhOXzIwMzlfMjAyMCA8LSBJUl85NV9DSShUTkVfYW5hcGhOXzIwMzlfMjAyMCwgVFBZXzIwMjBfMjAzOSwgbnJvdyhkZl8yMDIwXzIwMzkpKQ0KaXJvX2dic18yMDM5XzIwMjAgPC0gSVJfOTVfQ0koVE5FX2dic18yMDM5XzIwMjAsIFRQWV8yMDIwXzIwMzksIG5yb3coZGZfMjAyMF8yMDM5KSkNCmBgYA0KDQpgYGB7cn0NCiNFdmVudHMgaW4gMjAyMCBmb3IgYWdlIGdyb3VwIDAwLTE5DQpldmVudHNfMjAyMF80MDU5IDwtIHN1YnNldChkZl8yMDIwXzQwNTksIHllYXIoZW5kX2luY2lkZW5jZSkgPT0gMjAyMCkgDQojdGhlIF8yMDIwXyBwZXJzb255ZWFycyBmb3IgYW4gZXZlbnQgaW4gMjAyMCBhZ2VfYmFuZDQwNTkNClRQWV8yMDIwXzQwNTkgPC0gc3VtKGRmXzIwMjBfNDA1OSR5ZWFyc19pbl9zdHVkeV8yMDIwKQ0KDQojIENvdW50IHRoZW51bWJlciBvZiBldmVudHMgZm9yIGFnZV9iYW5kIDQwNTkgaW4gMjAyMA0KVE5FX2FuYXBoUF80MDU5XzIwMjAgPC0gYW1vdW50X2V2ZW50cyhldmVudHNfMjAyMF80MDU5LCAnYW5hcGh5bF9wb3NzaWJsZScpDQpUTkVfYW5hcGhOXzQwNTlfMjAyMCA8LSBhbW91bnRfZXZlbnRzKGV2ZW50c18yMDIwXzQwNTksICdhbmFwaHlsX25hcnJvdycpDQpUTkVfZ2JzXzQwNTlfMjAyMCA8LSBhbW91bnRfZXZlbnRzKGV2ZW50c18yMDIwXzQwNTksICdnYnNfbmFycm93JykNCg0KI0lSIGZvciBlYWNoIGV2ZW50IGluIDEwMDBQWSBmb3IgYWdlX2JhbmQgMC0xOSANCmlyb19hbmFwaFBfNDA1OV8yMDIwIDwtIElSXzk1X0NJKFRORV9hbmFwaFBfNDA1OV8yMDIwLCBUUFlfMjAyMF80MDU5LCBucm93KGRmXzIwMjBfNDA1OSkpDQppcm9fYW5hcGhOXzQwNTlfMjAyMCA8LSBJUl85NV9DSShUTkVfYW5hcGhOXzQwNTlfMjAyMCwgVFBZXzIwMjBfNDA1OSwgbnJvdyhkZl8yMDIwXzQwNTkpKQ0KaXJvX2dic180MDU5XzIwMjAgPC0gSVJfOTVfQ0koVE5FX2dic180MDU5XzIwMjAsIFRQWV8yMDIwXzQwNTksIG5yb3coZGZfMjAyMF80MDU5KSkNCmBgYA0KDQpgYGB7cn0NCiNFdmVudHMgaW4gMjAyMCBmb3IgYWdlIGdyb3VwIDAwLTE5DQpldmVudHNfMjAyMF82MDc5IDwtIHN1YnNldChkZl8yMDIwXzYwNzksIHllYXIoZW5kX2luY2lkZW5jZSkgPT0gMjAyMCkgDQojdGhlIF8yMDIwXyBwZXJzb255ZWFycyBmb3IgYW4gZXZlbnQgaW4gMjAyMCBhZ2VfYmFuZDYwNzkNClRQWV8yMDIwXzYwNzkgPC0gc3VtKGRmXzIwMjBfNjA3OSR5ZWFyc19pbl9zdHVkeV8yMDIwKQ0KDQojIENvdW50IHRoZW51bWJlciBvZiBldmVudHMgZm9yIGFnZV9iYW5kIDYwNzkgaW4gMjAyMA0KVE5FX2FuYXBoUF82MDc5XzIwMjAgPC0gYW1vdW50X2V2ZW50cyhldmVudHNfMjAyMF82MDc5LCAnYW5hcGh5bF9wb3NzaWJsZScpDQpUTkVfYW5hcGhOXzYwNzlfMjAyMCA8LSBhbW91bnRfZXZlbnRzKGV2ZW50c18yMDIwXzYwNzksICdhbmFwaHlsX25hcnJvdycpDQpUTkVfZ2JzXzYwNzlfMjAyMCA8LSBhbW91bnRfZXZlbnRzKGV2ZW50c18yMDIwXzYwNzksICdnYnNfbmFycm93JykNCg0KI0lSIGZvciBlYWNoIGV2ZW50IGluIDEwMDBQWSBmb3IgYWdlX2JhbmQgMC0xOSANCmlyb19hbmFwaFBfNjA3OV8yMDIwIDwtIElSXzk1X0NJKFRORV9hbmFwaFBfNjA3OV8yMDIwLCBUUFlfMjAyMF82MDc5LCBucm93KGRmXzIwMjBfNjA3OSkpDQppcm9fYW5hcGhOXzYwNzlfMjAyMCA8LSBJUl85NV9DSShUTkVfYW5hcGhOXzYwNzlfMjAyMCwgVFBZXzIwMjBfNjA3OSwgbnJvdyhkZl8yMDIwXzYwNzkpKQ0KaXJvX2dic182MDc5XzIwMjAgPC0gSVJfOTVfQ0koVE5FX2dic182MDc5XzIwMjAsIFRQWV8yMDIwXzYwNzksIG5yb3coZGZfMjAyMF82MDc5KSkNCmBgYA0KDQoNCg0KYGBge3J9DQpEaWFnMSA8LSByZXAoJ0FuYXBoeWxheGlzIG5hcnJvdycsIHRpbWVzPTI1KQ0KRGlhZzIgPC0gcmVwKCdBbmFwaHlsYXhpcyBwb3NzaWJsZScsIHRpbWVzPTI1KQ0KRGlhZzMgPC0gcmVwKCdnYnMgbmFycm93JywgdGltZXM9MjUpDQphbGxfZGlhZyA8LSBjKERpYWcxLCBEaWFnMiwgRGlhZzMpDQoNCmFsbF95ZWFycyA8LSByZXAoYygnVG90YWwnLCAnMjAxNycsICcyMDE4JywgJzIwMTknLCAnMjAyMCcpLCB0aW1lcz0xNSkNCg0KcmVwX3RvdGFsIDwtIHJlcCgnVG90YWwnLCB0aW1lcz01KQ0KcmVwXzAwMTkgPC0gcmVwKCcwLTE5JywgdGltZXM9NSkNCnJlcF8yMDM5IDwtIHJlcCgnMjAtMzknLCB0aW1lcz01KQ0KcmVwXzQwNTkgPC0gcmVwKCc0MC01OScsIHRpbWVzPTUpDQpyZXBfNjA3OSA8LSByZXAoJzYwLTc5JywgdGltZXM9NSkNCg0KYWxsX2FnZXMgPC0gcmVwKGMocmVwX3RvdGFsLCByZXBfMDAxOSwgcmVwXzIwMzksIHJlcF80MDU5LCByZXBfNjA3OSksIHRpbWVzPTMpDQoNCg0KDQpjb3VudF9ldmVudHMgPC0gYygNCiAgVE5FX2FuYXBoTiwgVE5FX2FuYXBoTl8yMDE3LCBUTkVfYW5hcGhOXzIwMTgsIA0KICBUTkVfYW5hcGhOXzIwMTksIFRORV9hbmFwaE5fMjAyMCwgDQogIFRORV9hbmFwaE4wMDE5LCBUTkVfYW5hcGhOXzAwMTlfMjAxNywgVE5FX2FuYXBoTl8wMDE5XzIwMTgsDQogIFRORV9hbmFwaE5fMDAxOV8yMDE5LCBUTkVfYW5hcGhOXzAwMTlfMjAyMCwgDQogIFRORV9hbmFwaE4yMDM5LCBUTkVfYW5hcGhOXzIwMzlfMjAxNywgVE5FX2FuYXBoTl8yMDM5XzIwMTgsDQogIFRORV9hbmFwaE5fMjAzOV8yMDE5LCBUTkVfYW5hcGhOXzIwMzlfMjAyMCwNCiAgVE5FX2FuYXBoTjQwNTksIFRORV9hbmFwaE5fNDA1OV8yMDE3LCBUTkVfYW5hcGhOXzQwNTlfMjAxOCwNCiAgVE5FX2FuYXBoTl80MDU5XzIwMTksIFRORV9hbmFwaE5fNDA1OV8yMDIwLA0KICBUTkVfYW5hcGhONjA3OSwgVE5FX2FuYXBoTl82MDc5XzIwMTcsIFRORV9hbmFwaE5fNjA3OV8yMDE4LA0KICBUTkVfYW5hcGhOXzYwNzlfMjAxOSwgVE5FX2FuYXBoTl82MDc5XzIwMjAsDQogICMjIyMgQW5hcGggUG9zc2libGUgDQogIFRORV9hbmFwaFAsIFRORV9hbmFwaFBfMjAxNywgVE5FX2FuYXBoUF8yMDE4LCANCiAgVE5FX2FuYXBoUF8yMDE5LCBUTkVfYW5hcGhQXzIwMjAsIA0KICBUTkVfYW5hcGhQMDAxOSwgVE5FX2FuYXBoUF8wMDE5XzIwMTcsIFRORV9hbmFwaFBfMDAxOV8yMDE4LA0KICBUTkVfYW5hcGhQXzAwMTlfMjAxOSwgVE5FX2FuYXBoUF8wMDE5XzIwMjAsIA0KICBUTkVfYW5hcGhQMjAzOSwgVE5FX2FuYXBoUF8yMDM5XzIwMTcsIFRORV9hbmFwaFBfMjAzOV8yMDE4LA0KICBUTkVfYW5hcGhQXzIwMzlfMjAxOSwgVE5FX2FuYXBoUF8yMDM5XzIwMjAsDQogIFRORV9hbmFwaFA0MDU5LCBUTkVfYW5hcGhQXzQwNTlfMjAxNywgVE5FX2FuYXBoUF80MDU5XzIwMTgsDQogIFRORV9hbmFwaFBfNDA1OV8yMDE5LCBUTkVfYW5hcGhQXzQwNTlfMjAyMCwNCiAgVE5FX2FuYXBoUDYwNzksIFRORV9hbmFwaFBfNjA3OV8yMDE3LCBUTkVfYW5hcGhQXzYwNzlfMjAxOCwNCiAgVE5FX2FuYXBoUF82MDc5XzIwMTksIFRORV9hbmFwaFBfNjA3OV8yMDIwLA0KICAjIyMjIEdCUyANCiAgVE5FX2dicywgVE5FX2dic18yMDE3LCBUTkVfZ2JzXzIwMTgsIA0KICBUTkVfZ2JzXzIwMTksIFRORV9nYnNfMjAyMCwgDQogIFRORV9nYnMwMDE5LCBUTkVfZ2JzXzAwMTlfMjAxNywgVE5FX2dic18wMDE5XzIwMTgsDQogIFRORV9nYnNfMDAxOV8yMDE5LCBUTkVfZ2JzXzAwMTlfMjAyMCwgDQogIFRORV9nYnMyMDM5LCBUTkVfZ2JzXzIwMzlfMjAxNywgVE5FX2dic18yMDM5XzIwMTgsDQogIFRORV9nYnNfMjAzOV8yMDE5LCBUTkVfZ2JzXzIwMzlfMjAyMCwNCiAgVE5FX2diczQwNTksIFRORV9nYnNfNDA1OV8yMDE3LCBUTkVfZ2JzXzQwNTlfMjAxOCwNCiAgVE5FX2dic180MDU5XzIwMTksIFRORV9nYnNfNDA1OV8yMDIwLA0KICBUTkVfZ2JzNjA3OSwgVE5FX2dic182MDc5XzIwMTcsIFRORV9nYnNfNjA3OV8yMDE4LA0KICBUTkVfZ2JzXzYwNzlfMjAxOSwgVE5FX2dic182MDc5XzIwMjANCiAgKQ0KDQoNClBlcnNZZWFyIDwtIGMoVFBZLCBUUFlfMjAxNywgVFBZXzIwMTgsIA0KICBUUFlfMjAxOSwgVFBZXzIwMjAsIA0KICBUUFkwMDE5LCBUUFlfMjAxN18wMDE5LCBUUFlfMjAxOF8wMDE5LA0KICBUUFlfMjAxOV8wMDE5LCBUUFlfMjAyMF8wMDE5LCANCiAgVFBZMjAzOSwgVFBZXzIwMTdfMjAzOSwgVFBZXzIwMThfMjAzOSwNCiAgVFBZXzIwMTlfMjAzOSwgVFBZXzIwMjBfMjAzOSwNCiAgVFBZNDA1OSwgVFBZXzIwMTdfNDA1OSwgVFBZXzIwMThfNDA1OSwNCiAgVFBZXzIwMTlfNDA1OSwgVFBZXzIwMjBfNDA1OSwNCiAgVFBZNjA3OSwgVFBZXzIwMTdfNDA1OSwgVFBZXzIwMThfNDA1OSwNCiAgVFBZXzIwMTlfNDA1OSwgVFBZXzIwMjBfNDA1OSkNCg0KDQpwZXJzX3llYXJfYWxsIDwtIHJlcChQZXJzWWVhciwgdGltZXM9MykNCg0KYGBgDQoNCmBgYHtyfQ0KSVJfMTAwMFBZIDwtICBhcy5udW1lcmljKGMoDQogIGlyb19hbmFwaE5bMV0sIGlyb19hbmFwaE5fMjAxN1sxXSwgaXJvX2FuYXBoTl8yMDE4WzFdLCANCiAgaXJvX2FuYXBoTl8yMDE5WzFdLCBpcm9fYW5hcGhOXzIwMjBbMV0sIA0KICBpcm9fYW5hcGhOMDAxOVsxXSwgaXJvX2FuYXBoTl8wMDE5XzIwMTdbMV0sIGlyb19hbmFwaE5fMDAxOV8yMDE4WzFdLA0KICBpcm9fYW5hcGhOXzAwMTlfMjAxOVsxXSwgaXJvX2FuYXBoTl8wMDE5XzIwMjBbMV0sIA0KICBpcm9fYW5hcGhOMjAzOVsxXSwgaXJvX2FuYXBoTl8yMDM5XzIwMTdbMV0sIGlyb19hbmFwaE5fMjAzOV8yMDE4WzFdLA0KICBpcm9fYW5hcGhOXzIwMzlfMjAxOVsxXSwgaXJvX2FuYXBoTl8yMDM5XzIwMjBbMV0sDQogIGlyb19hbmFwaE40MDU5WzFdLCBpcm9fYW5hcGhOXzQwNTlfMjAxN1sxXSwgaXJvX2FuYXBoTl80MDU5XzIwMThbMV0sDQogIGlyb19hbmFwaE5fNDA1OV8yMDE5WzFdLCBpcm9fYW5hcGhOXzQwNTlfMjAyMFsxXSwNCiAgaXJvX2FuYXBoTjYwNzlbMV0sIGlyb19hbmFwaE5fNjA3OV8yMDE3WzFdLCBpcm9fYW5hcGhOXzYwNzlfMjAxOFsxXSwNCiAgaXJvX2FuYXBoTl82MDc5XzIwMTlbMV0sIGlyb19hbmFwaE5fNjA3OV8yMDIwWzFdLA0KICAjIyMjIEFuYXBoIFBvc3NpYmxlIA0KICBpcm9fYW5hcGhQWzFdLCBpcm9fYW5hcGhQXzIwMTdbMV0sIGlyb19hbmFwaFBfMjAxOFsxXSwgDQogIGlyb19hbmFwaFBfMjAxOVsxXSwgaXJvX2FuYXBoUF8yMDIwWzFdLCANCiAgaXJvX2FuYXBoUDAwMTlbMV0sIGlyb19hbmFwaFBfMDAxOV8yMDE3WzFdLCBpcm9fYW5hcGhQXzAwMTlfMjAxOFsxXSwNCiAgaXJvX2FuYXBoUF8wMDE5XzIwMTlbMV0sIGlyb19hbmFwaFBfMDAxOV8yMDIwWzFdLCANCiAgaXJvX2FuYXBoUDIwMzlbMV0sIGlyb19hbmFwaFBfMjAzOV8yMDE3WzFdLCBpcm9fYW5hcGhQXzIwMzlfMjAxOFsxXSwNCiAgaXJvX2FuYXBoUF8yMDM5XzIwMTlbMV0sIGlyb19hbmFwaFBfMjAzOV8yMDIwWzFdLA0KICBpcm9fYW5hcGhQNDA1OVsxXSwgaXJvX2FuYXBoUF80MDU5XzIwMTdbMV0sIGlyb19hbmFwaFBfNDA1OV8yMDE4WzFdLA0KICBpcm9fYW5hcGhQXzQwNTlfMjAxOVsxXSwgaXJvX2FuYXBoUF80MDU5XzIwMjBbMV0sDQogIGlyb19hbmFwaFA2MDc5WzFdLCBpcm9fYW5hcGhQXzYwNzlfMjAxN1sxXSwgaXJvX2FuYXBoUF82MDc5XzIwMThbMV0sDQogIGlyb19hbmFwaFBfNjA3OV8yMDE5WzFdLCBpcm9fYW5hcGhQXzYwNzlfMjAyMFsxXSwNCiAgIyMjIyBHQlMgDQogICAgaXJvX2dic1sxXSwgaXJvX2dic18yMDE3WzFdLCBpcm9fZ2JzXzIwMThbMV0sIA0KICBpcm9fZ2JzXzIwMTlbMV0sIGlyb19nYnNfMjAyMFsxXSwgDQogIGlyb19nYnMwMDE5WzFdLCBpcm9fZ2JzXzAwMTlfMjAxN1sxXSwgaXJvX2dic18wMDE5XzIwMThbMV0sDQogIGlyb19nYnNfMDAxOV8yMDE5WzFdLCBpcm9fZ2JzXzAwMTlfMjAyMFsxXSwgDQogIGlyb19nYnMyMDM5WzFdLCBpcm9fZ2JzXzIwMzlfMjAxN1sxXSwgaXJvX2dic18yMDM5XzIwMThbMV0sDQogIGlyb19nYnNfMjAzOV8yMDE5WzFdLCBpcm9fZ2JzXzIwMzlfMjAyMFsxXSwNCiAgaXJvX2diczQwNTlbMV0sIGlyb19nYnNfNDA1OV8yMDE3WzFdLCBpcm9fZ2JzXzQwNTlfMjAxOFsxXSwNCiAgaXJvX2dic180MDU5XzIwMTlbMV0sIGlyb19nYnNfNDA1OV8yMDIwWzFdLA0KICBpcm9fZ2JzNjA3OVsxXSwgaXJvX2dic182MDc5XzIwMTdbMV0sIGlyb19nYnNfNjA3OV8yMDE4WzFdLA0KICBpcm9fZ2JzXzYwNzlfMjAxOVsxXSwgaXJvX2dic182MDc5XzIwMjBbMV0NCiAgKSkNCmBgYA0KDQpgYGB7cn0NCklSXzEwMDBQWV85NUwgPC0gYXMubnVtZXJpYyhjKA0KICBpcm9fYW5hcGhOWzJdLCBpcm9fYW5hcGhOXzIwMTdbMl0sIGlyb19hbmFwaE5fMjAxOFsyXSwgDQogIGlyb19hbmFwaE5fMjAxOVsyXSwgaXJvX2FuYXBoTl8yMDIwWzJdLCANCiAgaXJvX2FuYXBoTjAwMTlbMl0sIGlyb19hbmFwaE5fMDAxOV8yMDE3WzJdLCBpcm9fYW5hcGhOXzAwMTlfMjAxOFsyXSwNCiAgaXJvX2FuYXBoTl8wMDE5XzIwMTlbMl0sIGlyb19hbmFwaE5fMDAxOV8yMDIwWzJdLCANCiAgaXJvX2FuYXBoTjIwMzlbMl0sIGlyb19hbmFwaE5fMjAzOV8yMDE3WzJdLCBpcm9fYW5hcGhOXzIwMzlfMjAxOFsyXSwNCiAgaXJvX2FuYXBoTl8yMDM5XzIwMTlbMl0sIGlyb19hbmFwaE5fMjAzOV8yMDIwWzJdLA0KICBpcm9fYW5hcGhONDA1OVsyXSwgaXJvX2FuYXBoTl80MDU5XzIwMTdbMl0sIGlyb19hbmFwaE5fNDA1OV8yMDE4WzJdLA0KICBpcm9fYW5hcGhOXzQwNTlfMjAxOVsyXSwgaXJvX2FuYXBoTl80MDU5XzIwMjBbMl0sDQogIGlyb19hbmFwaE42MDc5WzJdLCBpcm9fYW5hcGhOXzYwNzlfMjAxN1syXSwgaXJvX2FuYXBoTl82MDc5XzIwMThbMl0sDQogIGlyb19hbmFwaE5fNjA3OV8yMDE5WzJdLCBpcm9fYW5hcGhOXzYwNzlfMjAyMFsyXSwNCiAgIyMjIyBBbmFwaCBQb3NzaWJsZSANCiAgaXJvX2FuYXBoUFsyXSwgaXJvX2FuYXBoUF8yMDE3WzJdLCBpcm9fYW5hcGhQXzIwMThbMl0sIA0KICBpcm9fYW5hcGhQXzIwMTlbMl0sIGlyb19hbmFwaFBfMjAyMFsyXSwgDQogIGlyb19hbmFwaFAwMDE5WzJdLCBpcm9fYW5hcGhQXzAwMTlfMjAxN1syXSwgaXJvX2FuYXBoUF8wMDE5XzIwMThbMl0sDQogIGlyb19hbmFwaFBfMDAxOV8yMDE5WzJdLCBpcm9fYW5hcGhQXzAwMTlfMjAyMFsyXSwgDQogIGlyb19hbmFwaFAyMDM5WzJdLCBpcm9fYW5hcGhQXzIwMzlfMjAxN1syXSwgaXJvX2FuYXBoUF8yMDM5XzIwMThbMl0sDQogIGlyb19hbmFwaFBfMjAzOV8yMDE5WzJdLCBpcm9fYW5hcGhQXzIwMzlfMjAyMFsyXSwNCiAgaXJvX2FuYXBoUDQwNTlbMl0sIGlyb19hbmFwaFBfNDA1OV8yMDE3WzJdLCBpcm9fYW5hcGhQXzQwNTlfMjAxOFsyXSwNCiAgaXJvX2FuYXBoUF80MDU5XzIwMTlbMl0sIGlyb19hbmFwaFBfNDA1OV8yMDIwWzJdLA0KICBpcm9fYW5hcGhQNjA3OVsyXSwgaXJvX2FuYXBoUF82MDc5XzIwMTdbMl0sIGlyb19hbmFwaFBfNjA3OV8yMDE4WzJdLA0KICBpcm9fYW5hcGhQXzYwNzlfMjAxOVsyXSwgaXJvX2FuYXBoUF82MDc5XzIwMjBbMl0sDQogICMjIyMgR0JTIA0KICAgIGlyb19nYnNbMl0sIGlyb19nYnNfMjAxN1syXSwgaXJvX2dic18yMDE4WzJdLCANCiAgaXJvX2dic18yMDE5WzJdLCBpcm9fZ2JzXzIwMjBbMl0sIA0KICBpcm9fZ2JzMDAxOVsyXSwgaXJvX2dic18wMDE5XzIwMTdbMl0sIGlyb19nYnNfMDAxOV8yMDE4WzJdLA0KICBpcm9fZ2JzXzAwMTlfMjAxOVsyXSwgaXJvX2dic18wMDE5XzIwMjBbMl0sIA0KICBpcm9fZ2JzMjAzOVsyXSwgaXJvX2dic18yMDM5XzIwMTdbMl0sIGlyb19nYnNfMjAzOV8yMDE4WzJdLA0KICBpcm9fZ2JzXzIwMzlfMjAxOVsyXSwgaXJvX2dic18yMDM5XzIwMjBbMl0sDQogIGlyb19nYnM0MDU5WzJdLCBpcm9fZ2JzXzQwNTlfMjAxN1syXSwgaXJvX2dic180MDU5XzIwMThbMl0sDQogIGlyb19nYnNfNDA1OV8yMDE5WzJdLCBpcm9fZ2JzXzQwNTlfMjAyMFsyXSwNCiAgaXJvX2diczYwNzlbMl0sIGlyb19nYnNfNjA3OV8yMDE3WzJdLCBpcm9fZ2JzXzYwNzlfMjAxOFsyXSwNCiAgaXJvX2dic182MDc5XzIwMTlbMl0sIGlyb19nYnNfNjA3OV8yMDIwWzJdDQogICkpDQpgYGANCg0KDQpgYGB7cn0NCklSXzEwMDBQWV85NUggPC0gYXMubnVtZXJpYyhjKA0KICBpcm9fYW5hcGhOWzNdLCBpcm9fYW5hcGhOXzIwMTdbM10sIGlyb19hbmFwaE5fMjAxOFszXSwgDQogIGlyb19hbmFwaE5fMjAxOVszXSwgaXJvX2FuYXBoTl8yMDIwWzNdLCANCiAgaXJvX2FuYXBoTjAwMTlbM10sIGlyb19hbmFwaE5fMDAxOV8yMDE3WzNdLCBpcm9fYW5hcGhOXzAwMTlfMjAxOFszXSwNCiAgaXJvX2FuYXBoTl8wMDE5XzIwMTlbM10sIGlyb19hbmFwaE5fMDAxOV8yMDIwWzNdLCANCiAgaXJvX2FuYXBoTjIwMzlbM10sIGlyb19hbmFwaE5fMjAzOV8yMDE3WzNdLCBpcm9fYW5hcGhOXzIwMzlfMjAxOFszXSwNCiAgaXJvX2FuYXBoTl8yMDM5XzIwMTlbM10sIGlyb19hbmFwaE5fMjAzOV8yMDIwWzNdLA0KICBpcm9fYW5hcGhONDA1OVszXSwgaXJvX2FuYXBoTl80MDU5XzIwMTdbM10sIGlyb19hbmFwaE5fNDA1OV8yMDE4WzNdLA0KICBpcm9fYW5hcGhOXzQwNTlfMjAxOVszXSwgaXJvX2FuYXBoTl80MDU5XzIwMjBbM10sDQogIGlyb19hbmFwaE42MDc5WzNdLCBpcm9fYW5hcGhOXzYwNzlfMjAxN1szXSwgaXJvX2FuYXBoTl82MDc5XzIwMThbM10sDQogIGlyb19hbmFwaE5fNjA3OV8yMDE5WzNdLCBpcm9fYW5hcGhOXzYwNzlfMjAyMFszXSwNCiAgIyMjIyBBbmFwaCBQb3NzaWJsZSANCiAgaXJvX2FuYXBoUFszXSwgaXJvX2FuYXBoUF8yMDE3WzNdLCBpcm9fYW5hcGhQXzIwMThbM10sIA0KICBpcm9fYW5hcGhQXzIwMTlbM10sIGlyb19hbmFwaFBfMjAyMFszXSwgDQogIGlyb19hbmFwaFAwMDE5WzNdLCBpcm9fYW5hcGhQXzAwMTlfMjAxN1szXSwgaXJvX2FuYXBoUF8wMDE5XzIwMThbM10sDQogIGlyb19hbmFwaFBfMDAxOV8yMDE5WzNdLCBpcm9fYW5hcGhQXzAwMTlfMjAyMFszXSwgDQogIGlyb19hbmFwaFAyMDM5WzNdLCBpcm9fYW5hcGhQXzIwMzlfMjAxN1szXSwgaXJvX2FuYXBoUF8yMDM5XzIwMThbM10sDQogIGlyb19hbmFwaFBfMjAzOV8yMDE5WzNdLCBpcm9fYW5hcGhQXzIwMzlfMjAyMFszXSwNCiAgaXJvX2FuYXBoUDQwNTlbM10sIGlyb19hbmFwaFBfNDA1OV8yMDE3WzNdLCBpcm9fYW5hcGhQXzQwNTlfMjAxOFszXSwNCiAgaXJvX2FuYXBoUF80MDU5XzIwMTlbM10sIGlyb19hbmFwaFBfNDA1OV8yMDIwWzNdLA0KICBpcm9fYW5hcGhQNjA3OVszXSwgaXJvX2FuYXBoUF82MDc5XzIwMTdbM10sIGlyb19hbmFwaFBfNjA3OV8yMDE4WzNdLA0KICBpcm9fYW5hcGhQXzYwNzlfMjAxOVszXSwgaXJvX2FuYXBoUF82MDc5XzIwMjBbM10sDQogICMjIyMgR0JTIA0KICAgIGlyb19nYnNbM10sIGlyb19nYnNfMjAxN1szXSwgaXJvX2dic18yMDE4WzNdLCANCiAgaXJvX2dic18yMDE5WzNdLCBpcm9fZ2JzXzIwMjBbM10sIA0KICBpcm9fZ2JzMDAxOVszXSwgaXJvX2dic18wMDE5XzIwMTdbM10sIGlyb19nYnNfMDAxOV8yMDE4WzNdLA0KICBpcm9fZ2JzXzAwMTlfMjAxOVszXSwgaXJvX2dic18wMDE5XzIwMjBbM10sIA0KICBpcm9fZ2JzMjAzOVszXSwgaXJvX2dic18yMDM5XzIwMTdbM10sIGlyb19nYnNfMjAzOV8yMDE4WzNdLA0KICBpcm9fZ2JzXzIwMzlfMjAxOVszXSwgaXJvX2dic18yMDM5XzIwMjBbM10sDQogIGlyb19nYnM0MDU5WzNdLCBpcm9fZ2JzXzQwNTlfMjAxN1szXSwgaXJvX2dic180MDU5XzIwMThbM10sDQogIGlyb19nYnNfNDA1OV8yMDE5WzNdLCBpcm9fZ2JzXzQwNTlfMjAyMFszXSwNCiAgaXJvX2diczYwNzlbM10sIGlyb19nYnNfNjA3OV8yMDE3WzNdLCBpcm9fZ2JzXzYwNzlfMjAxOFszXSwNCiAgaXJvX2dic182MDc5XzIwMTlbM10sIGlyb19nYnNfNjA3OV8yMDIwWzNdDQogICkpDQpgYGANCg0KYGBge3J9DQpCaWdfdGFibGUgPC0gZGF0YS50YWJsZShEaWFnbm9zaXMgPSBhbGxfZGlhZywgDQogICAgICAgICAgICAgICAgICAgICAgICBBZ2VfQmFuZHMgPSBhbGxfYWdlcywNCiAgICAgICAgICAgICAgICAgICAgICAgIFllYXIgPSBhbGxfeWVhcnMsDQogICAgICAgICAgICAgICAgICAgICAgICBDb3VudCA9IGNvdW50X2V2ZW50cywNCiAgICAgICAgICAgICAgICAgICAgICAgIFBlcnNvbl9ZZWFycyA9IHJvdW5kKHBlcnNfeWVhcl9hbGwsIDIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgSVJfMTAwMF9QWSA9IElSXzEwMDBQWSwgDQogICAgICAgICAgICAgICAgICAgICAgICBJUl8xMDAwX1BZXzk1TCA9IElSXzEwMDBQWV85NUwsDQogICAgICAgICAgICAgICAgICAgICAgICBJUl8xMDAwUFlfOTVIID0gSVJfMTAwMFBZXzk1SCkNCmBgYA0KDQpgYGB7ciB0YWIyLCByZXN1bHRzID0gJ2hvbGQnfQ0KZGF0YXRhYmxlKEJpZ190YWJsZSwgDQogICAgICAgICAgY2FwdGlvbj0nSW5jaWRlbmNlIFJhdGVzIHdpdGggOTUlIENJJywNCiAgICAgICAgICBjbGFzcz0nY2VsbC1ib3JkZXIgc3RyaXBlJywgDQogICAgICAgICAgcm93bmFtZXM9RiwgDQogICAgICAgICAgY29sbmFtZXM9YygnRGlhZ25vc2lzJywgJ0FnZSBCYW5kcycsICdZZWFyJywgJ0Ftb3VudCBvZiBFdmVudHMnLCANCiAgICAgICAgICAgICAgICAgICAgICdQZXJzb24gWWVhcnMnLCAnSVIgMTAwMCBQZXJzb24gWWVhcnMnLCAnSVIgMTAwMCBQZXJzb24gWWVhcnMgIDk1JSBDSSBMb3dlcicsICdJUiAxMDAwIFBlcnNvbiBZZWFycyA5NSUgQ0kgSGlnaGVyJyksDQogICAgICAgICAgZXh0ZW5zaW9ucz0nQnV0dG9ucycsDQogICAgICAgICAgb3B0aW9ucyA9IGxpc3QoZG9tID0gJ0JmcnRpcCcsIGJ1dHRvbnMgPSBjKCdjb3B5JywgJ2NzdicsICdleGNlbCcsICdwZGYnLCAncHJpbnQnKQ0KICAgICAgICAgICkpDQpgYGANCg0KIyMjIEZvcmVzdCBQbG90cyB7LS50YWJzZXR9IA0KDQojIyMjIFRvdGFsICB7LSN0b3R9DQoNCg0KYGBge3J9DQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCg0KZGYgPC0gQmlnX3RhYmxlIA0KDQoNCg0KZGZfdG90YWwgPC0gZGYgJT4lICANCiAgZmlsdGVyKFllYXI9PSdUb3RhbCcpDQoNCmRmX3RvdGFsJHlfb3JkZXIgPC0gZmFjdG9yKHBhc3RlKGRmX3RvdGFsJEFnZV9CYW5kcyksIGxldmVscyA9IHVuaXF1ZShwYXN0ZSggZGZfdG90YWwkQWdlX0JhbmRzKSksIG9yZGVyZWQgPSBUUlVFKQ0KIyBwbG90IHRoZSBmb3Jlc3QgcGxvdA0KZ2dwbG90KGRmX3RvdGFsLCBhZXMoeCA9IElSXzEwMDBfUFksIHkgPSB5X29yZGVyKSkgKw0KICBnZW9tX3BvaW50KCkgKw0KICBnZW9tX2Vycm9yYmFyaChhZXMoeG1pbiA9IElSXzEwMDBfUFlfOTVMLCB4bWF4ID0gSVJfMTAwMFBZXzk1SCkpICsNCiAgZmFjZXRfZ3JpZChEaWFnbm9zaXMgfiAuLCBzY2FsZXMgPSAiZnJlZV95Iiwgc3BhY2UgPSAiZnJlZV95IikgKw0KICB0aGVtZV9idygpICsNCiAgbGFicyh0aXRsZSA9ICJGb3Jlc3QgUGxvdCBvZiBJbmNpZGVuY2UgUmF0ZXMiLA0KICAgICAgIHggPSAiSW5jaWRlbmNlIFJhdGUgcGVyIDEwMDAgUGVyc29uLVllYXJzIiwNCiAgICAgICB5ID0gIkRpYWdub3NpcyBhbmQgQWdlIEJhbmQiLA0KICAgICAgIHN1YnRpdGxlID0gIkRhdGEgZnJvbSAyMDE3IHRvIDIwMjAiKSsNCiAgc2NhbGVfeF9jb250aW51b3VzKGxpbWl0cyA9IGMoMCwgMTUwKSwgYnJlYWtzID0gc2VxKDAsIDE2MCwgYnkgPSAyMCkpDQpgYGANCg0KIyMjIyAyMDE3IHstIzIwMTd9DQoNCg0KYGBge3J9DQoNCmRmXzIwMTdfUCA8LSBkZiAlPiUgIA0KICBmaWx0ZXIoWWVhcj09JzIwMTcnKQ0KDQpkZl8yMDE3X1AkeV9vcmRlciA8LSBmYWN0b3IocGFzdGUoZGZfMjAxN19QJEFnZV9CYW5kcyksIGxldmVscyA9IHVuaXF1ZShwYXN0ZShkZl8yMDE3X1AkQWdlX0JhbmRzKSksIG9yZGVyZWQgPSBUUlVFKQ0KIyBwbG90IHRoZSBmb3Jlc3QgcGxvdA0KZ2dwbG90KGRmXzIwMTdfUCwgYWVzKHggPSBJUl8xMDAwX1BZLCB5ID0geV9vcmRlcikpICsNCiAgZ2VvbV9wb2ludCgpICsNCiAgZ2VvbV9lcnJvcmJhcmgoYWVzKHhtaW4gPSBJUl8xMDAwX1BZXzk1TCwgeG1heCA9IElSXzEwMDBQWV85NUgpKSArDQogIGZhY2V0X2dyaWQoRGlhZ25vc2lzIH4gLiwgc2NhbGVzID0gImZyZWVfeSIsIHNwYWNlID0gImZyZWVfeSIpICsNCiAgdGhlbWVfYncoKSArDQogIGxhYnModGl0bGUgPSAiRm9yZXN0IFBsb3Qgb2YgSW5jaWRlbmNlIFJhdGVzIiwNCiAgICAgICB4ID0gIkluY2lkZW5jZSBSYXRlIHBlciAxMDAwIFBlcnNvbi1ZZWFycyIsDQogICAgICAgeSA9ICJEaWFnbm9zaXMgYW5kIEFnZSBCYW5kIiwNCiAgICAgICBzdWJ0aXRsZSA9ICJEYXRhIGZyb20gMjAxNyIpICsNCiAgc2NhbGVfeF9jb250aW51b3VzKGxpbWl0cyA9IGMoMCwgMTUwKSwgYnJlYWtzID0gc2VxKDAsIDE2MCwgYnkgPSAyMCkpDQpgYGANCg0KDQojIyMjIDIwMTggey0jMjAxOH0NCg0KYGBge3J9DQoNCmRmXzIwMThfUCA8LSBkZiAlPiUgIA0KICBmaWx0ZXIoWWVhcj09JzIwMTgnKQ0KDQpkZl8yMDE4X1AkeV9vcmRlciA8LSBmYWN0b3IocGFzdGUoZGZfMjAxOF9QJEFnZV9CYW5kcyksIGxldmVscyA9IHVuaXF1ZShwYXN0ZShkZl8yMDE4X1AkQWdlX0JhbmRzKSksIG9yZGVyZWQgPSBUUlVFKQ0KIyBwbG90IHRoZSBmb3Jlc3QgcGxvdA0KZ2dwbG90KGRmXzIwMThfUCwgYWVzKHggPSBJUl8xMDAwX1BZLCB5ID0geV9vcmRlcikpICsNCiAgZ2VvbV9wb2ludCgpICsNCiAgZ2VvbV9lcnJvcmJhcmgoYWVzKHhtaW4gPSBJUl8xMDAwX1BZXzk1TCwgeG1heCA9IElSXzEwMDBQWV85NUgpKSArDQogIGZhY2V0X2dyaWQoRGlhZ25vc2lzIH4gLiwgc2NhbGVzID0gImZyZWVfeSIsIHNwYWNlID0gImZyZWVfeSIpICsNCiAgdGhlbWVfYncoKSArDQogIGxhYnModGl0bGUgPSAiRm9yZXN0IFBsb3Qgb2YgSW5jaWRlbmNlIFJhdGVzIiwNCiAgICAgICB4ID0gIkluY2lkZW5jZSBSYXRlIHBlciAxMDAwIFBlcnNvbi1ZZWFycyIsDQogICAgICAgeSA9ICJEaWFnbm9zaXMgYW5kIEFnZSBCYW5kIiwNCiAgICAgICBzdWJ0aXRsZSA9ICJEYXRhIGZyb20gMjAxOCIpICsNCiAgc2NhbGVfeF9jb250aW51b3VzKGxpbWl0cyA9IGMoMCwgMTUwKSwgYnJlYWtzID0gc2VxKDAsIDE2MCwgYnkgPSAyMCkpDQpgYGANCg0KIA0KIyMjIyAyMDE5IHstIzIwMTl9DQoNCmBgYHtyfQ0KDQpkZl8yMDE5X1AgPC0gZGYgJT4lICANCiAgZmlsdGVyKFllYXI9PScyMDE5JykNCg0KZGZfMjAxOV9QJHlfb3JkZXIgPC0gZmFjdG9yKHBhc3RlKGRmXzIwMTlfUCRBZ2VfQmFuZHMpLCBsZXZlbHMgPSB1bmlxdWUocGFzdGUoZGZfMjAxOV9QJEFnZV9CYW5kcykpLCBvcmRlcmVkID0gVFJVRSkNCiMgcGxvdCB0aGUgZm9yZXN0IHBsb3QNCmdncGxvdChkZl8yMDE5X1AsIGFlcyh4ID0gSVJfMTAwMF9QWSwgeSA9IHlfb3JkZXIpKSArDQogIGdlb21fcG9pbnQoKSArDQogIGdlb21fZXJyb3JiYXJoKGFlcyh4bWluID0gSVJfMTAwMF9QWV85NUwsIHhtYXggPSBJUl8xMDAwUFlfOTVIKSkgKw0KICBmYWNldF9ncmlkKERpYWdub3NpcyB+IC4sIHNjYWxlcyA9ICJmcmVlX3kiLCBzcGFjZSA9ICJmcmVlX3kiKSArDQogIHRoZW1lX2J3KCkgKw0KICBsYWJzKHRpdGxlID0gIkZvcmVzdCBQbG90IG9mIEluY2lkZW5jZSBSYXRlcyIsDQogICAgICAgeCA9ICJJbmNpZGVuY2UgUmF0ZSBwZXIgMTAwMCBQZXJzb24tWWVhcnMiLA0KICAgICAgIHkgPSAiRGlhZ25vc2lzIGFuZCBBZ2UgQmFuZCIsDQogICAgICAgc3VidGl0bGUgPSAiRGF0YSBmcm9tIDIwMTkiKSsNCiAgc2NhbGVfeF9jb250aW51b3VzKGxpbWl0cyA9IGMoMCwgMTUwKSwgYnJlYWtzID0gc2VxKDAsIDE2MCwgYnkgPSAyMCkpDQpgYGANCg0KIyMjIyAyMDIwIHstIzIwMjB9DQoNCmBgYHtyfQ0KDQpkZl8yMDIwX1AgPC0gZGYgJT4lICANCiAgZmlsdGVyKFllYXI9PScyMDIwJykNCg0KZGZfMjAyMF9QJHlfb3JkZXIgPC0gZmFjdG9yKHBhc3RlKGRmXzIwMjBfUCRBZ2VfQmFuZHMpLCBsZXZlbHMgPSB1bmlxdWUocGFzdGUoZGZfMjAyMF9QJEFnZV9CYW5kcykpLCBvcmRlcmVkID0gVFJVRSkNCiMgcGxvdCB0aGUgZm9yZXN0IHBsb3QNCmdncGxvdChkZl8yMDIwX1AsIGFlcyh4ID0gSVJfMTAwMF9QWSwgeSA9IHlfb3JkZXIpKSArDQogIGdlb21fcG9pbnQoKSArDQogIGdlb21fZXJyb3JiYXJoKGFlcyh4bWluID0gSVJfMTAwMF9QWV85NUwsIHhtYXggPSBJUl8xMDAwUFlfOTVIKSkgKw0KICBmYWNldF9ncmlkKERpYWdub3NpcyB+IC4sIHNjYWxlcyA9ICJmcmVlX3kiLCBzcGFjZSA9ICJmcmVlX3kiKSArDQogIHRoZW1lX2J3KCkgKw0KICBsYWJzKHRpdGxlID0gIkZvcmVzdCBQbG90IG9mIEluY2lkZW5jZSBSYXRlcyIsDQogICAgICAgeCA9ICJJbmNpZGVuY2UgUmF0ZSBwZXIgMTAwMCBQZXJzb24tWWVhcnMiLA0KICAgICAgIHkgPSAiRGlhZ25vc2lzIGFuZCBBZ2UgQmFuZCIsDQogICAgICAgc3VidGl0bGUgPSAiRGF0YSBmcm9tIDIwMjAiKSsNCiAgc2NhbGVfeF9jb250aW51b3VzKGxpbWl0cyA9IGMoMCwgMTUwKSwgYnJlYWtzID0gc2VxKDAsIDE2MCwgYnkgPSAyMCkpDQpgYGANCg0KDQojIyBBbm5leCBEYXkgNiB7LSNkYXk2fQ0KDQpgYGB7ciBmaWcuYWxpZ249J2NlbnRlcicsIG91dC53aWR0aD0nMTAwJScsb3V0LmhlaWdodD0gNTAwMCxyZXN1bHRzPSdhc2lzJ30NCmtuaXRyOjppbmNsdWRlX2dyYXBoaWNzKCJkYXk2LnBkZiIpDQpgYGANCg0KDQo=